Middle
Noem enkele soorten wachttijden in Selenium en leg ze uit.
sobes.tech AI
Antwoord van AI
-
Implicit Waits (Impliceit wachten)
- Wordt één keer ingesteld voor de hele WebDriver-sessie.
- WebDriver wacht een bepaalde tijd voordat het een
NoSuchElementExceptiongooit bij het zoeken naar een element. - De wachttijd geldt voor elke aanroep van
findElement(s). - Als het element eerder wordt gevonden, wacht WebDriver niet tot het einde.
-
Explicit Waits (Expliciete wachten)
- Worden toegepast op een specifieke voorwaarde voor een bepaald element.
- WebDriver wacht tot de voorwaarde wordt voldaan binnen een ingestelde maximale tijd.
- Als de voorwaarde eerder wordt voldaan, gaat de code verder.
- Als niet binnen de maximale tijd, wordt een
TimeoutExceptiongegooid. - Wordt meestal gebruikt met de klasse
WebDriverWaitenExpectedConditions.
// Voorbeeld van expliciete wacht WebDriverWait wait = new WebDriverWait(driver, Duration.ofSeconds(10)); WebElement element = wait.until(ExpectedConditions.elementToBeClickable(By.id("myButton"))); -
Fluent Waits (Vloeiende wachten)
- Een meer geavanceerde versie van expliciete wachten.
- Maakt het mogelijk niet alleen de maximale wachttijd te definiëren, maar ook:
- De frequentie van het controleren van de voorwaarde (polling interval).
- De typen uitzonderingen die genegeerd moeten worden tijdens het wachten.
// Voorbeeld van vloeiende wachten 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")));
Samenvattingstabel:
| Type wachten | Toepassingsgebied | Flexibiliteit | Afhandeling van uitzonderingen | Gebruik |
|---|---|---|---|---|
| Impliceit wachten | Hele WebDriver-sessie | Laag (vast tijdsduur) | Automatisch | Algemene wachttijd voor alle zoekopdrachten |
| Expliciet wachten | Specifieke voorwaarde voor een element | Hoog (gedefinieerde voorwaarde) | Handmatig (TimeoutException) |
Wachten op een specifieke toestand van het element |
| Vloeiend wachten | Specifieke voorwaarde voor een element | Zeer hoog (interval, negeren) | Handmatig (TimeoutException) |
Fijnere afstelling van wachten |