webdriver边缘:输入元素的dispatchEvent不起作用

时间:2019-06-23 19:47:13

标签: selenium-webdriver webdriver microsoft-edge

webdriver边缘:输入元素的dispatchEvent不起作用:

例如,设置一个隐藏的输入值,然后触发更改事件:

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

事件侦听器未触发。

由于输入元素被隐藏,SendKeys不起作用。

1 个答案:

答案 0 :(得分:1)

我用下面的代码进行了测试,可以在MS Edge上正常工作。

C#代码:

date --debug ...

HTML代码:

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();

        }
    }
}

MS Edge中的输出:

enter image description here