我正在寻找类似于waitForElementPresent
的东西,用于在单击元素之前检查元素是否显示。我认为这可以通过implicitWait
来完成,所以我使用了以下代码:
driver.manage().timeouts().implicitlyWait(5, TimeUnit.SECONDS);
然后单击“方式”
driver.findElement(By.id(prop.getProperty(vName))).click();
不幸的是,它有时等待元素,有时不等待。我找了一段时间,找到了这个解决方案:
for (int second = 0;; second++) {
Thread.sleep(sleepTime);
if (second >= 10)
fail("timeout : " + vName);
try {
if (driver.findElement(By.id(prop.getProperty(vName))).isDisplayed())
break;
} catch (Exception e) {
writeToExcel("data.xls", e.toString(), parameters.currentTestRow, 46);
}
}
driver.findElement(By.id(prop.getProperty(vName))).click();
它很好地等待了,但在超时之前,它必须等待10次5,50秒。有点过头了。因此,我将隐式等待时间设置为1秒,直到现在看起来一切正常。因为现在有些东西在超时前等待10秒,但另一些东西在1秒之后就超时了。
你如何在你的代码中覆盖等待元素存在/可见?任何提示都是可以理解的。
https://stackoverflow.com/questions/11736027
复制相似问题