无法使用 IEDriverServer 单击元素

Cannot click element with IEDriverServer

我在网页上有一个元素,只有在单击其父元素后才会显示。因此,在单击演示列表中的一个演示后,会显示一行代表所选演示操作的图标。以下代码适用于 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;

尝试禁用 IE 的本机事件

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

我在 C# 版本中使用它获得了更好的结果。阅读 this 了解您可能需要这样做的原因。