Я шукаю щось подібне, щоб 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 секунд.
Як ви охоплюєте очікування елемента, присутнього / видимого у вашому коді? Будь-який натяк помітний.