Sobes.tech
Middle

Norādiet dažus Selenium gaidīšanas veidus un paskaidrojiet tos.

sobes.tech AI

Atbilde no AI

  1. Nemaināmi gaidīšanas (Implicit Waits)

    • Iestata vienreiz visai WebDriver sesijai.
    • WebDriver gaidīs noteiktu laiku pirms izmet NoSuchElementException kļūdu meklējot elementu.
    • Gaidīšanas laiks tiek piemērots katram findElement(s) izsaukumam.
    • Ja elements tiek atrasts agrāk, WebDriver negaidīs līdz galam.
  2. Izteiktās gaidīšanas (Explicit Waits)

    • Tiek piemērotas konkrētam nosacījumam konkrētam elementam.
    • WebDriver gaidīs, kamēr izpildīsies norādītais nosacījums, līdz maksimālajam laikam.
    • Ja nosacījums izpildās agrāk, kods turpinās.
    • Ja nosacījums netiek izpildīts maksimālajā laikā, tiek izsviesta TimeoutException.
    • Parasti tiek izmantotas ar WebDriverWait un ExpectedConditions.
    // Piemērs ar izteikto gaidīšanu
    WebDriverWait wait = new WebDriverWait(driver, Duration.ofSeconds(10));
    WebElement element = wait.until(ExpectedConditions.elementToBeClickable(By.id("myButton")));
    
  3. Fluenta gaidīšana (Fluent Waits)

    • Attīstītāka versija no izteiktajām gaidīšanām.
    • Ļauj noteikt ne tikai maksimālo gaidīšanas laiku, bet arī:
      • pārbaudes intervālu (polling interval).
      • izņēmumu tipus, kurus vajag ignorēt gaidīšanas laikā.
    // Piemērs ar fluenta gaidīšanu
    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")));
    

Salīdzināšanas tabula:

Gaidīšanas tips Piemērošanas joma Elastība Izņēmumu apstrāde Lietošana
Nemaināmi gaidīšanas Visa WebDriver sesija Zema (fiksēts laiks) Automātiska Kopējais gaidīšanas laiks visām meklēšanām
Izteiktās gaidīšanas Konkrēts nosacījums elementam Augsta (noteikts nosacījums) Rokas (TimeoutException) Konkrēta elementa stāvokļa gaidīšana
Fluenta gaidīšana Konkrēts nosacījums elementam Ļoti augsta (intervāls, ignorēšana) Rokas (TimeoutException) Detalizētāka gaidīšanas konfigurācija