WebDriver - 等待使用 Java 的元素
2022-08-31 12:07:45
我正在寻找类似于在单击元素之前检查元素是否显示的东西。我认为这可以由 来完成,所以我使用了以下内容: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秒后超时。
你如何覆盖代码中存在/可见的元素的等待?任何暗示都是可观的。