每当我在IE中运行WebDriver测试(使用InternetExplorerDriver)时,需要单击网页的元素,InternetExplorerDriver将接管我的鼠标。
当我在Chrome或Firefox中运行测试时,不会发生这种情况。有没有办法阻止IE测试控制鼠标指针?
导致鼠标指针“被盗”的示例代码:
public void clickButtonNamed(String buttonName) {
driver.findElement(By.xpath("//div[contains(text(),'" + buttonName + "')]")).click();
}
public void dragAndDropElement(WebElement source, WebElement target) throws InterruptedException {
action.dragAndDrop(source,target).build().perform();
}
//IE Driver initialization
DesiredCapabilities caps = DesiredCapabilities.internetExplorer();
caps.setCapability(InternetExplorerDriver.REQUIRE_WINDOW_FOCUS,true);
WebDriver driver = new InternetExplorerDriver(caps);
答案 0 :(得分:3)
您是否有理由将此属性InternetExplorerDriver.REQUIRE_WINDOW_FOCUS
设置为true
?这就是为什么IEDriver要求IE控制你的指针。
要修复它,只需将其删除或将其设置为false即可。这是在2.28.0.3
中引入的,这里引用了CHANGELOG:
推出" requireWindowFocus"进入IE驱动程序的能力。与" nativeEvents"一起使用时能力, 驱动程序将尝试将当前的IE窗口带到 执行鼠标或键盘事件前的前景。
此外,何时 requireWindowFocus功能设置为true,高级用户 现在,交互将使用Windows SendInput()API来执行 互动。要启用此行为,请设置
的值 要求窗口焦点能力为" true"在创建实例时 IE驱动程序。此新功能的默认值为" false"。这个 功能目前被认为是非常实验的;使用 风险自负。
答案 1 :(得分:0)
使用此设置将避免IE在执行操作时接管鼠标控制-
InternetExplorerOptions ieOp =新的InternetExplorerOptions(); ieOp.disableNativeEvents();