WebDriver - Warten Sie mit Java auf das Element
Ich bin auf der Suche nach etwas ähnlichemwaitForElementPresent
um zu überprüfen, ob das Element angezeigt wird, bevor ich darauf klicke. Ich dachte, das kann durch getan werdenimplicitWait
Also habe ich folgendes benutzt:
driver.manage().timeouts().implicitlyWait(5, TimeUnit.SECONDS);
und dann klicken Sie auf
driver.findElement(By.id(prop.getProperty(vName))).click();
Leider wartet es manchmal auf das Element und manchmal nicht. Ich habe eine Weile gesucht und diese Lösung gefunden:
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();
Und es hat gewartet, aber bevor es abgelaufen ist, musste es 10 mal 5, 50 Sekunden warten. Ein bisschen viel. Also habe ich die implizite Wartezeit auf 1 Sekunde gesetzt und alles schien bis jetzt in Ordnung zu sein. Denn jetzt warten einige Dinge 10s vor dem Timeout, andere nach 1s.
Wie decken Sie das in Ihrem Code vorhandene / sichtbare Warten auf ein Element ab? Jeder Hinweis ist spürbar.