Ответ
Явное ожидание (Explicit Wait) — это механизм в автоматизированном тестировании, который приостанавливает выполнение скрипта до выполнения определенного условия (например, появления элемента на странице) в течение заданного таймаута. Оно предпочтительнее неявных ожиданий и жестких пауз (time.sleep), так как делает тесты более надежными и быстрыми.
Пример на Python с Selenium WebDriver:
from selenium.webdriver.common.by import By
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC
# Создаем объект ожидания с таймаутом 10 секунд
wait = WebDriverWait(driver, 10)
# Ожидаем появления элемента с ID "dynamic-element" и получаем его
# Если элемент не появится за 10 секунд, будет выброшено исключение TimeoutException
element = wait.until(
EC.presence_of_element_located((By.ID, "dynamic-element"))
)
# Теперь можно взаимодействовать с элементом
element.click()
Ключевые моменты:
- Условие: Используются готовые методы из
expected_conditions(EC), такие какpresence_of_element_located,element_to_be_clickable,visibility_of_element_located. - Таймаут: Максимальное время ожидания условия.
- Возврат: Метод
untilвозвращает результат условия (например, найденный веб-элемент). - Исключение: При неудаче выбрасывается
TimeoutException.
Альтернативы (менее надежные):
- Неявные ожидания (Implicit Waits): Глобальная настройка для всех поисков элементов (
driver.implicitly_wait(10)). - Жесткие паузы (
time.sleep): Блокируют выполнение на фиксированное время независимо от состояния приложения.