Sobes.tech
Middle

Paminėkite keletą laukimo tipų Selenium ir paaiškinkite juos.

sobes.tech AI

Atsakymas iš AI

  1. Numatytie laukiantys (Implicit Waits)

    • Nustatomi vieną kartą visai WebDriver sesijai.
    • WebDriver lauks tam tikrą laiką prieš išmetant NoSuchElementException išimtį ieškant elemento.
    • Laukimo laikas taikomas kiekvienam findElement(s) iškvietimui.
    • Jei elementas rastas anksčiau, WebDriver nelauks iki pabaigos.
  2. Išankstiniai laukimai (Explicit Waits)

    • Taikomi konkrečiai sąlygai konkrečiam elementui.
    • WebDriver lauks, kol įvyks nurodyta sąlyga, iki nustatyto maksimalaus laiko.
    • Jei sąlyga įvyksta anksčiau, kodas tęsiasi.
    • Jei sąlyga neįvyksta per maksimalų laiką, išmetama TimeoutException.
    • Paprastai naudojama su WebDriverWait ir ExpectedConditions.
    // Pavyzdys su išankstiniu laukimu
    WebDriverWait wait = new WebDriverWait(driver, Duration.ofSeconds(10));
    WebElement element = wait.until(ExpectedConditions.elementToBeClickable(By.id("myButton")));
    
  3. Lankstūs laukimai (Fluent Waits)

    • Pažangesnė išankstinių laukimų versija.
    • Leidžia nustatyti ne tik maksimalią laukimo trukmę, bet ir:
      • patikrinimo dažnumą (polling interval).
      • išimtis, kurias reikia ignoruoti laukimo metu.
    // Pavyzdys su lankstiu laukimu
    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")));
    

Lyginamoji lentelė:

Laukimo tipas Taikymo sritis Lankstumas Išimčių apdorojimas Naudojimas
Numatytie laukiantys Visa WebDriver sesija Žemas (fiksuotas laikas) Automatinis Bendra laukimo trukmė visiems paieškos veiksmams
Išankstiniai laukimai Konkretus sąlyga elementui Aukštas (nustatyta sąlyga) Rankinis (TimeoutException) Specifinė elemento būklė
Lankstūs laukimai Konkretus sąlyga elementui Labai aukštas (intervalas, ignoravimas) Rankinis (TimeoutException) Detalesnės laukimo nustatymai