WebDriver,如何阻止InternetExplorerDriver控制鼠标指针

时间:2014-03-11 23:08:47

标签: java internet-explorer selenium webdriver mouse

每当我在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);

2 个答案:

答案 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();