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į.
WebDriverWaitSelenium 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.