webdriver边缘:输入元素的dispatchEvent不起作用:
例如,设置一个隐藏的输入值,然后触发更改事件:
((JavascriptExecutor)driver).executeScript(
"arguments[0].setAttribute('value', 'hello')", inputElem);
((JavascriptExecutor)driver).executeScript(
"arguments[0].dispatchEvent(new Event('change'))", inputElem);
事件侦听器未触发。
由于输入元素被隐藏,SendKeys不起作用。
答案 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中的输出: