край webdriver: dispatchEvent для элемента ввода не работает - PullRequest
0 голосов
/ 23 июня 2019

край веб-драйвера: dispatchEvent для элемента ввода не работает:

Например, установить скрытое значение ввода, а затем вызвать событие изменения:

((JavascriptExecutor)driver).executeScript(
                    "arguments[0].setAttribute('value', 'hello')", inputElem);
((JavascriptExecutor)driver).executeScript(
                    "arguments[0].dispatchEvent(new Event('change'))", inputElem);

прослушиватели событий не сработали.

SendKeys не работает, так как элемент ввода скрыт.

1 Ответ

1 голос
/ 24 июня 2019

Я сделал тест с кодом ниже, работает нормально с MS Edge.

C # Код:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using OpenQA.Selenium;
using OpenQA.Selenium.Chrome;
using OpenQA.Selenium.Edge;
using OpenQA.Selenium.Remote;
using OpenQA.Selenium.Support.UI;

namespace ConsoleApp2
{
    class Program
    {
        static void Main(string[] args)
        {

            IWebDriver driver = new EdgeDriver();

            driver.Navigate().GoToUrl(@"C:\Users\panchals\Desktop\tests\test1.html");

            try
            {
               RemoteWebDriver r = (RemoteWebDriver)driver;
               String s1 = "document.getElementsByName('ttl').item(0).value = '123';";
               r.ExecuteScript(s1);
               r.ExecuteScript("arguments[0].dispatchEvent(new Event('change'))", driver.FindElement(By.Name("ttl")));

            }
            catch (Exception e)
            {
                Console.WriteLine(e.Message);
            }
            Console.ReadKey();

            driver.Quit();
            driver.Close();

        }
    }
}

HTML код:

<!DOCTYPE html>
<html>
<head>
    <title>Page Title</title>
<script>
function abc()
{
alert("OnChange event called successfully.");
}
</script>
</head>
<body>

<form action="">
 <label for="title"><b>Title :</b></label>
 <input type="hidden"  name="ttl" onchange="abc();" value=""><br>

</form>

</body>
</html>

Вывод в MSКрай:

enter image description here

...