无法使用IEDriverServer单击元素

时间:2015-06-24 10:40:33

标签: java selenium selenium-webdriver webdriver

我在网页上有一个元素,只有在单击其父元素后才会显示。因此,在点击演示列表中的演示后,会显示一行代表所选演示操作的图标。以下代码适用于webdriver和chromedriver:

demo.click(); //click demo
waitForElementIsDisplayed(demoReservation_btn); //wait until reservation icon is displayed
demoReservation_btn.click(); //click icon

最初我得到了一个StaleElementReferenceException并试图通过在while循环中使用try / catch块来解决这个问题,该循环将继续循环直到单击该图标。这导致IEDriverServer在几次循环后崩溃。

我也试过把它包装成一个像这样的动作:

Action action = new Action(driver);
action.click(demo).click(demoReservation_btn).build().perform()

这会导致NoSuchElementException。

我知道documentation中提到了一些关于浏览器焦点和悬停在元素上的问题,但我不相信这是问题所在。我已经尝试过其他一些事情,比如在动作中添加moverToElement,将鼠标悬停在元素上但是没有成功。我相信一个可能的解决方案是使用javascript执行器,但我想在可能的情况下避免这种方法,还有其他任何建议吗?

修改

IEDriverServer设置:

File file = new File("IEDriverServer.exe");
System.setProperty("webdriver.ie.driver", file.getAbsolutePath());
driver = new InternetExplorerDriver();
driver.manage().window().maximize();
return driver;

1 个答案:

答案 0 :(得分:3)

尝试禁用IE的本机事件

DesiredCapabilities cap = DesiredCapabilities.internetExplorer();
cap.setCapability("nativeEvents",false);
driver  = new InternetExplorerDriver(cap);

我在C#版本中使用它有更好的结果。阅读this以了解您可能需要执行此操作的原因。