Sobes.tech
Middle

Wat zijn de verschillen tussen expliciete en impliciete verwachtingen in de context van testautomatisering?

sobes.tech AI

Antwoord van AI

De Expliciete Wacht (Explicit Wait) is een code die de uitvoering onderbreekt totdat aan een bepaalde voorwaarde is voldaan of de maximale wachttijd is verstreken. Het richt zich op een specifiek element of gebeurtenis.

  • WebDriverWait in Selenium is een voorbeeld van expliciete wacht.

De Impliciete Wacht (Implicit Wait) is een instelling die wordt toegepast op de driver gedurende zijn hele levensduur. Het geeft aan dat de driver een bepaalde tijd wacht voordat de NoSuchElementException wordt gegooid bij het zoeken naar een element. Als het element eerder verschijnt, stopt de wacht.

  • Het wordt één keer ingesteld voor de hele sessie van de driver.

Belangrijkste verschillen:

Kenmerk Expliciete wacht Impliciete wacht
Toepassing Op een specifieke voorwaarde / element Op de hele sessie van de driver
Flexibiliteit Hoog, kan wachten op specifieke voorwaarden Laag, wacht alleen tot het element verschijnt
Instelling Voor elke wachtgeval apart Eén keer voor de hele driver
Voorbeeld Selenium WebDriverWait(driver, tijd).until(...) driver.implicitly_wait(tijd)

Voorbeeld van expliciete wacht in Python (Selenium):

# Wacht tot het element zichtbaar wordt
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC
from selenium.webdriver.common.by import By

try:
    element = WebDriverWait(driver, 10).until(
        EC.visibility_of_element_located((By.ID, "mijn_element_id"))
    )
finally:
    # Acties na de wacht of afhandeling van TimeoutException
    pass

Voorbeeld van impliciete wacht in Python (Selenium):

# Stel de impliciete wacht in
driver.implicitly_wait(10) # Wacht tot 10 seconden voordat NoSuchElementException wordt gegooid

# Daarna gebruiken alle find_element/find_elements deze wacht
element = driver.find_element(By.ID, "een_id")

Het gebruik van expliciete en impliciete wacht samen kan leiden tot onvoorspelbaar gedrag. Het wordt aanbevolen om expliciete wacht te gebruiken voor de meeste specifieke gevallen, en impliciete wacht alleen indien nodig, of helemaal niet, met voorzichtigheid en begrip van de globale werking. Expliciete wacht is preferabel omdat het meer granulariteit biedt in de controle over het wachtproces.