webdriver边缘:输入元素的dispatchEvent不起作用 [英] webdriver edge: dispatchEvent for input element not working

查看:123
本文介绍了webdriver边缘:输入元素的dispatchEvent不起作用的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

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

webdriver edge: dispatchEvent for input element not working:

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

For example, set a hidden input value, then trigger change event:

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

事件侦听器未触发.

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

SendKeys not working since the input element is hidden.

推荐答案

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

I made a test with code below is working fine with 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 Edge中的输出:

Output in MS Edge:

这篇关于webdriver边缘:输入元素的dispatchEvent不起作用的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆