Sobes.tech
Middle

Kuo skiriasi aiški ir neaiški lūkesčiai testavimo automatizacijos kontekste?

sobes.tech AI

Atsakymas iš AI

Aiškus laukimas (Explicit Wait) yra kodas, kuris sustabdo vykdymą, kol neįvykdomas tam tikras sąlyga arba nepasibaigia maksimalus laukimo laikas. Jis nukreiptas į konkretų elementą arba įvykį.

  • WebDriverWait Selenium yra pavyzdys aiškaus laukimo.

Nepakankamas laukimas (Implicit Wait) yra nustatymas, kuris taikomas vairuotojui viso jo gyvavimo metu. Jis nurodo vairuotojui laukti tam tikrą laiką prieš išmetant išimtį NoSuchElementException ieškant elemento. Jei elementas pasirodo anksčiau, laukimas nutraukiamas.

Pagrindiniai skirtumai:

Bruožas Aiškus laukimas Nepakankamas laukimas
Taikymas konkrečiai sąlygai / elementui visam vairuotojo seansui
Lankstumas Aukštas, galima laukti konkrečių sąlygų Žemas, laukia tik kol elementas pasirodys
Nustatymas kiekvienu atveju atskirai vieną kartą visam vairuotojui
Selenium pavyzdys WebDriverWait(driver, time).until(...) driver.implicitly_wait(time)

Python aiškaus laukimo pavyzdys (Selenium):

# Laukimas, kol elementas taps matomas
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, "my_element_id"))
    )
finally:
    # Veiksmai po laukimo arba TimeoutException apdorojimas
    pass

Nepakankamo laukimo pavyzdys Python (Selenium):

# Nepakankamo laukimo nustatymas
driver.implicitly_wait(10) # Laukia iki 10 sekundžių, kol išmes `NoSuchElementException`

# Vėliau visi find_element/find_elements naudos šį laukimą
element = driver.find_element(By.ID, "some_id")

Naudojant aiškų ir nepakeičiamą laukimą kartu, gali būti neprognozuojamas elgesys. Rekomenduojama naudoti aiškų laukimą daugeliu atvejų, o nepakeičiamą — arba visiškai nenaudoti, arba naudoti atsargiai ir suprasti jo globalų poveikį. Aiškus laukimas yra pranašesnis, nes suteikia tikslesnę kontrolę laukimo procese.