Sobes.tech
Middle

Nennen Sie einige Arten von Wartezeiten in Selenium und erklären Sie sie.

sobes.tech KI

Antwort von AI

  1. 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.
  2. 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 TimeoutException ausgelöst.
    • Wird meist mit WebDriverWait und ExpectedConditions verwendet.
    // Beispiel für explizite Wartezeit
    WebDriverWait wait = new WebDriverWait(driver, Duration.ofSeconds(10));
    WebElement element = wait.until(ExpectedConditions.elementToBeClickable(By.id("myButton")));
    
  3. 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