Ich bin auf der Suche nach etwas ähnlich zu waitForElementPresent
, um zu überprüfen, ob Element angezeigt wird, bevor ich es anklicke. Ich dachte, das durch implicitWait
getan werden kann, so habe ich die folgenden:WebDriver - warten auf Element mit Java
driver.manage().timeouts().implicitlyWait(5, TimeUnit.SECONDS);
und klicken Sie dann auf von
driver.findElement(By.id(prop.getProperty(vName))).click();
Leider manchmal wartet sie auf das Element und manchmal nicht. Ich sah eine Weile und fand diese Lösung:
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 wartete alles in Ordnung, aber bevor es eine Zeitüberschreitung musste 10 mal warten 5, 50 Sekunden. Ein bisschen viel. Also habe ich implizit auf 1sec gewartet und alles schien bis jetzt in Ordnung zu sein. Weil jetzt manche Dinge 10 Sekunden vor dem Timeout warten, aber einige andere Dinge nach 1 Sekunden.
Wie decken Sie das Warten auf Element, das in Ihrem Code vorhanden/sichtbar ist? Jeder Hinweis ist nennenswert.
Vielen Dank! Wenn ich nur früher über diese Klasse wüsste, wäre mein Leben einfacher :) – tom
Wie integriere ich Ihren Code in dieses Format?\t '@FindBy (wie = How.ID, mit =" Anmelde-Button ") \t WebElement signUpButton;' Darüber hinaus bekomme ich immer noch eine NPE mit Ihrem Code. Sieht so aus, als ob es versucht, elementToBeClickable zu erhalten. Wie können wir diese Methode verwenden, wenn das Element nicht geladen ist? – HelloWorldNoMore