硒中的单击相当于双击

2023-11-30

我有一个简单的代码,点击链接就会打开一个新窗口。但是在执行脚本时,单击与双击同一元素一样,会打开 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.0, IEDriverServer 3.4.0 with IE(v 10/11),您可以考虑通过以下配置属性DesiredCapabilities Class:

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

Browser Focus:挑战在于,如果窗口没有焦点,IE 本身似乎不完全尊重我们向 IE 浏览器窗口发送的 Windows 消息(WM_MOUSEDOWN 和 WM_MOUSEUP)。具体来说,被单击的元素将在其周围收到一个焦点窗口,但该元素不会处理该单击。可以说,我们根本不应该发送消息;我们应该这样做。相反,我们应该使用 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);
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

硒中的单击相当于双击 的相关文章