硒事件未触发,需要解决

时间:2019-03-22 20:00:47

标签: javascript selenium selenium-webdriver onblur onfocus

我在浏览器页面上有三个文本字段和“提交”按钮。

让我们说A,B,C,然后提交 (所有字段均为可选)

如果我在字段A中手动输入一个值,则字段B和字段C被禁用,如果我输入B或C,则字段A被禁用。 单击搜索按钮,无错误显示。

但是使用C#语言的Selenium自动化执行相同的操作,即在A中输入一个值,单击提交按钮后,其他两个字段没有被禁用并引发错误,说输入B的值,输入C的值

2 个答案:

答案 0 :(得分:0)

欢迎来到SO。在change

中输入值后,您可以触发eleInputboxA事件
IJavaScriptExecutor js = (IJavaScriptExecutor)driver;
js.ExecuteScript("arguments[0].dispatchEvent(new Event('change', {'bubbles': true,'cancelable': true}));",eleInputboxA);

*根据相关事件更改事件名称。

答案 1 :(得分:0)

suputuri所说的应该起作用。尽管我认为以下内容会更加简洁。

我的建议是:

     using OpenQA.Selenium.Support.Extensions;   

     driver.ExecuteJavascript("$('#TextBoxId01').val('New Text Value').trigger('change').trigger('mouseup')");

这将把文本输入和触发事件全部结合在一起。由于我们是通过javascript触发事件,因此无论如何用Selenium进行文本输入都没有多大意义。在这种情况下,硒已经无法模拟真实用户的输入,因此这样做不会造成额外的损失。

请注意,我同时添加了“ change”和“ mouseup”事件触发器。我不知道你在用哪个。删除任何不必要的内容。尽管如果您检查了该元素并发现它应该触发多个事件,请像上面一样操作将所有需要触发的事件链接起来。

您可以通过以下方式查询DOM中的事件:

   getEventListeners($("#SomeElement")[0]); //Javascript
   $._data($("#SomeElement")[0], "events"); //JQuery