Middle
Paminėkite keletą laukimo tipų Selenium ir paaiškinkite juos.
sobes.tech AI
Atsakymas iš AI
-
Numatytie laukiantys (Implicit Waits)
- Nustatomi vieną kartą visai WebDriver sesijai.
- WebDriver lauks tam tikrą laiką prieš išmetant
NoSuchElementExceptionišimtį ieškant elemento. - Laukimo laikas taikomas kiekvienam
findElement(s)iškvietimui. - Jei elementas rastas anksčiau, WebDriver nelauks iki pabaigos.
-
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
WebDriverWaitirExpectedConditions.
// Pavyzdys su išankstiniu laukimu WebDriverWait wait = new WebDriverWait(driver, Duration.ofSeconds(10)); WebElement element = wait.until(ExpectedConditions.elementToBeClickable(By.id("myButton"))); -
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 |