Middle
Nennen Sie einige Arten von Wartezeiten in Selenium und erklären Sie sie.
sobes.tech KI
Antwort von AI
-
Implizite Wartezeiten (Implicit Waits)
- Werden einmal für die gesamte WebDriver-Sitzung konfiguriert.
- WebDriver wartet eine bestimmte Zeit, bevor eine
NoSuchElementException-Ausnahme beim Suchen eines Elements ausgelöst wird. - Die Wartezeit gilt für jeden Aufruf von
findElement(s). - Wenn das Element früher gefunden wird, wartet WebDriver nicht bis zum Ende.
-
Explizite Wartezeiten (Explicit Waits)
- Werden auf eine bestimmte Bedingung für ein konkretes Element angewendet.
- WebDriver wartet, bis die Bedingung erfüllt ist, innerhalb einer festgelegten maximalen Zeit.
- Wenn die Bedingung früher erfüllt ist, wird der Code fortgesetzt.
- Wenn die Bedingung nicht innerhalb der maximalen Zeit erfüllt wird, wird eine
TimeoutExceptionausgelöst. - Wird meist mit
WebDriverWaitundExpectedConditionsverwendet.
// Beispiel für explizite Wartezeit WebDriverWait wait = new WebDriverWait(driver, Duration.ofSeconds(10)); WebElement element = wait.until(ExpectedConditions.elementToBeClickable(By.id("myButton"))); -
Fluide Wartezeiten (Fluent Waits)
- Eine fortgeschrittene Version der expliziten Wartezeiten.
- Ermöglichen die Festlegung nicht nur der maximalen Wartezeit, sondern auch:
- Die Häufigkeit der Überprüfung der Bedingung (Polling-Intervall).
- Die Arten von Ausnahmen, die während des Wartens ignoriert werden sollen.
// Beispiel für fluide Wartezeit Wait<WebDriver> wait = new FluentWait<>(driver) .withTimeout(Duration.ofSeconds(30)) .pollingEvery(Duration.ofSeconds(5)) .ignoring(NoSuchElementException.class); WebElement element = wait.until(driver -> driver.findElement(By.id("myElement")));
Zusammenfassungstabelle:
| Wartezeit-Typ | Anwendungsbereich | Flexibilität | Ausnahmebehandlung | Verwendung |
|---|---|---|---|---|
| Implizite Wartezeit | Ganze WebDriver-Sitzung | Niedrig (feste Zeit) | Automatisch | Allgemeine Wartezeit für alle Suchen |
| Explizite Wartezeit | Spezifische Bedingung für ein Element | Hoch (definierte Bedingung) | Manuell (TimeoutException) |
Warten auf einen bestimmten Zustand des Elements |
| Fluide Wartezeit | Spezifische Bedingung für ein Element | Sehr hoch (Intervall, ignorieren) | Manuell (TimeoutException) |
Feinabstimmung der Wartezeit |