Урок 07. Расширенные практики Selenium
⚡ Кратко: ожидания и EC в Selenium 4
Три вида ожидания: implicitly_wait — глобальное, для всех find_element; WebDriverWait + EC — явное, ждёт конкретного условия; time.sleep — жёсткое, антипаттерн.
- Лучший выбор: явное ожидание —
WebDriverWait(driver, 10).until(EC.element_to_be_clickable(...)) - Ключевые EC:
presence_of_element_located,visibility_of_element_located,element_to_be_clickable,text_to_be_present_in_element,url_contains - AJAX: страницы обновляются без перезагрузки → нужно явное ожидание конкретного состояния элемента
send_keys()— ввод текста;clear()— очистка поля;click()— кликstaleness_of— ждёт исчезновения элемента из DOMelement_located_to_be_selected— ждёт выбора чекбокса / radio-button
Топ-3 ошибки: 1) Смешивать implicitly_wait и WebDriverWait в одном тесте — непредсказуемые задержки. 2) Использовать time.sleep вместо EC — тест медленный и ненадёжный. 3) Путать presence (в DOM) и visibility (виден пользователю).
📖 О чём этот урок
При автоматизации тестирования с Selenium критически важно уметь корректно обрабатывать ожидания загрузки элементов. Если этого не делать, тест будет нестабильным: иногда проходить, иногда падать из-за того, что элемент ещё не загрузился.
В этом уроке мы разберём три подхода к ожиданиям, изучим все основные Expected Conditions, научимся писать надёжные тесты для AJAX-страниц и освоим базовые взаимодействия с элементами.
Что изучим
- Три вида ожидания: неявные, явные, жёсткие — сравнение, плюсы и минусы
WebDriverWait+expected_conditions— все ключевые условия- Что такое AJAX и почему нужны явные ожидания
- Написание pytest-тестов с явным ожиданием для AJAX-страниц
- Взаимодействие с элементами:
send_keys(),clear(),click() - Практические задания из лекции: slow calculator, OrangeHRM, form validation
📚 Что повторить перед изучением
- ← Урок 06: Summary session 3 — повторение локаторов
- Стратегии поиска элементов:
By.ID,By.CSS_SELECTOR,By.XPATH - Фикстуры pytest:
@pytest.fixture,yield - Запуск браузера и навигация:
driver.get(),driver.quit() - Основы HTTP и AJAX: что такое асинхронные запросы
🎯 Что изучать дальше
- → Урок 08: Summary session 4 — повторение расширенных практик
- ActionChains: hover, drag-and-drop, double_click
- Работа с
Select, чекбоксами, radio-button - Фреймы (iframe) и работа с несколькими окнами