我在浏览器页面上有三个文本字段和“提交”按钮。
让我们说A,B,C,然后提交 (所有字段均为可选)
如果我在字段A中手动输入一个值,则字段B和字段C被禁用,如果我输入B或C,则字段A被禁用。 单击搜索按钮,无错误显示。
但是使用C#语言的Selenium自动化执行相同的操作,即在A中输入一个值,单击提交按钮后,其他两个字段没有被禁用并引发错误,说输入B的值,输入C的值
答案 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