【发布时间】:2015-06-24 10:40:32
【问题描述】:
我在网页上有一个元素,只有在单击其父元素后才可见。因此,单击演示列表中的演示后,会显示一排代表所选演示操作的图标。以下代码适用于 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 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;
【问题讨论】:
-
曾经参考这个:**stackoverflow.com/questions/30660578/…**.
-
这是使 IEDriverServer 正常工作所需配置的一部分。如果不这样做,我就不会达到现在的地步。
-
使用
WebDriverWait wait = new WebDriverWait(driver, 10);和 ExpectedConditions -
waitForElementIsDisplayed(demoReservation_btn) 已经在等待显示元素。
-
如何实例化 IEDriver?
标签: java selenium selenium-webdriver webdriver