WebDriver - ожидание элемента с использованием Java
Я ищу что-то похожее на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 секунду.
Как вы покрываете ожидающий элемент, присутствующий / видимый в вашем коде? Любой намек заметен.