事件不会在硒中被解雇,需要解决

问题描述 投票:0回答:2

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

让我们说A,B,C和提交(所有字段都是可选的)

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

但是在C#语言中使用Selenium自动化做同样的事情,即在A中输入一个值,其他两个字段没有被禁用,并且在点击提交按钮后输入错误,说输入B的值,输入C的值。

javascript selenium selenium-webdriver onblur onfocus
2个回答
0
投票

欢迎来到SO。在change中输入值后,您可以触发eleInputboxA事件

IJavaScriptExecutor js = (IJavaScriptExecutor)driver;
js.ExecuteScript("arguments[0].dispatchEvent(new Event('change', {'bubbles': true,'cancelable': true}));",eleInputboxA);

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


0
投票

supputuri说什么应该工作。虽然我认为以下内容会更简洁一些。

我的建议如下:

     using OpenQA.Selenium.Support.Extensions;   

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

这将把文本输入和触发事件合二为一。由于我们通过javascript触发事件,因此无论如何使用Selenium进行文本输入没有多大意义。在这种情况下,Selenium无法模仿真实用户的输入,因此不会造成额外的损失。

请注意,我添加了“更改”和“鼠标”事件触发器。我不知道你的是哪一个。删除任何不必要的。虽然如果您检查元素并看到它应该触发多个事件,请链接您需要触发的所有事件,如上所述。

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

   getEventListeners($("#SomeElement")[0]); //Javascript
   $._data($("#SomeElement")[0], "events"); //JQuery
© www.soinside.com 2019 - 2024. All rights reserved.