Вопрос проверяет знание о механизмах синхронизации в автоматизации веб-тестирования с Selenium.
Неявное ожидание (implicit wait) задаёт максимальное время поиска элементов, автоматически применяясь ко всем операциям поиска. Явные ожидания (explicit wait) настраиваются для конкретных условий (видимость, кликабельность) с помощью объекта WebDriverWait и ExpectedConditions.
Неявные ожидания:
Устанавливаются один раз:
driver.implicitly_wait(10)Ожидают присутствие элемента до заданного таймаута.
Менее гибкие, применяются ко всем find-операциям.
Явные ожидания:
Создаются для конкретного случая:
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC
wait = WebDriverWait(driver, 15)
elem = wait.until(EC.visibility_of_element_located((By.ID, "submit")))Поддерживают различные условия (visibility, element_to_be_clickable, presence_of_all_elements).
Флэши (fluent waits):
Расширенный вариант явных ожиданий с polling и игнорированием исключений.
Настраивают частоту опроса и список игнорируемых исключений.
Когда применять:
Неявные — для простого фиксированного таймаута.
Явные — для контроля сложных условий появления/исчезновения элементов.