WebDriver: Warten auf Elementpräsenz
Frage: Wie kann ich zuverlässig warten, bis ein Element vorher sichtbar wird? darauf klicken? Implizite Wartezeiten allein scheinen inkonsistent zu sein.
Um dieses Problem zu beheben, können implizite Wartezeiten verwendet werden. Eine zuverlässigere Lösung ist jedoch:
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();
Dieser Code wartet, bis das Element sichtbar ist oder ein Timeout-Wert erreicht wird. Allerdings muss der Benutzer die Wartezeit definieren, was unpraktisch sein kann.
Antwort: Nutzen Sie die expliziten Wartefunktionen von WebDriver, um zuverlässige Wartezeiten auf das Vorhandensein von Elementen sicherzustellen.
Der folgende Code demonstriert den empfohlenen Ansatz:
WebDriverWait wait = new WebDriverWait(webDriver, timeoutInSeconds); wait.until(ExpectedConditions.visibilityOfElementLocated(By.id<locator>));
Alternativ können Sie dies tun Verwendung:
wait.until(ExpectedConditions.elementToBeClickable(By.id<locator>));
Diese Methoden bieten eine detaillierte Kontrolle über Wartebedingungen und machen eine benutzerdefinierte Schlaflogik überflüssig.
Zusätzlich Ressourcen:
Das obige ist der detaillierte Inhalt vonWie kann ich vor dem Klicken zuverlässig auf die Sichtbarkeit von Elementen in WebDriver warten?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!