单击硒作为双击

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了单击硒作为双击相关的知识,希望对你有一定的参考价值。

我有一个简单的代码,我点击链接,它打开一个新窗口。但是在执行脚本时,单击会在同一元素上双击,并打开2个窗口。

我正在使用InternetExplorer驱动程序

String baseURL = "URL_to_opened";

DesiredCapabilities cap = DesiredCapabilities.internetExplorer();

cap.setCapability(InternetExplorerDriver.NATIVE_EVENTS, false);

cap.setCapability(InternetExplorerDriver.INTRODUCE_FLAKINESS_BY_IGNORING_SECURITY_DOMAINS,true);

 WebDriver driver = new InternetExplorerDriver(cap);

driver.get(baseURL);

driver.findElement(By.xpath("Element to be clicked")).click();
答案

使用Selenium 3.4.0IEDriverServer 3.4.0IE(v 10/11)时,您可以考虑通过DesiredCapabilities类传递以下配置属性:

Native Events:由于InternetExplorerDriver仅限Windows,它会尝试使用所谓的“本机”或操作系统级事件在浏览器中执行鼠标和键盘操作。这与将模拟javascript事件用于相同操作形成对比。使用本机事件的优点是它不依赖于JavaScript沙箱,并确保在浏览器中正确传播JavaScript事件。但是,当IE浏览器窗口没有焦点,以及尝试将鼠标悬停在元素上时,鼠标事件目前存在一些问题。

Browser Focus:挑战在于,如果窗口没有焦点,IE本身似乎不完全尊重我们发送IE浏览器窗口(WM_MOUSEDOWN和WM_MOUSEUP)的Windows消息。具体来说,单击的元素将在其周围接收焦点窗口,但元素不会处理单击。可以说,我们根本不应该发送消息;相反,我们应该使用SendInput()API,但该API明确要求窗口具有焦点。

您可以在此link中找到有关这些事实的更多文档。

示例代码块:

DesiredCapabilities cap = DesiredCapabilities.internetExplorer();
cap.setCapability(InternetExplorerDriver.NATIVE_EVENTS, true);
cap.setCapability(InternetExplorerDriver.REQUIREWINDOWFOCUS, true);
cap.setCapability(InternetExplorerDriver.INTRODUCE_FLAKINESS_BY_IGNORING_SECURITY_DOMAINS,true);
WebDriver driver = new InternetExplorerDriver(cap);

以上是关于单击硒作为双击的主要内容,如果未能解决你的问题,请参考以下文章

如何单击硒悬停后可见的元素?

单击带有硒和python的href按钮?

硒 - 不可点击的链接[重复]

目标窗口在硒中关闭

通过硒单击链接

硒复选框未单击