Учебник Автоматизация тестирования на Selenium для начинающих
Автоматизация браузерных тестов на Selenium и Python: от первого клика до Page Object и запуска в CI.
Курс «Автоматизация тестирования на Selenium» состоит из 5 разделов и 15 уроков: Начало работы, Локаторы и ожидания, Взаимодействие со страницей, Архитектура тестов и Запуск и CI. Уроки идут по порядку — от основ к более сложным темам, в каждом есть объяснение с примерами, а в конце — вопросы для самопроверки. К урокам привязаны задачи с автоматической проверкой: прочитали тему — сразу закрепили её кодом.
Программа курса
1 Начало работы
- Зачем нужна автоматизация UI
Что автоматизация тестов даёт и чего не даёт, почему регрессия — главный кандидат, сколько стоит поддержка автотестов и когда автоматизация вредна.
- Selenium WebDriver: установка и устройство
Как Selenium управляет браузером через W3C WebDriver Protocol, установка selenium 4.x, встроенный Selenium Manager вместо ручной загрузки chromedriver.
- Первый тест: открыть страницу и проверить заголовок
Минимальный рабочий тест на Selenium и Python: создание драйвера, get(), проверка title через assert и обязательный quit() в try/finally.
- Зачем нужна автоматизация UI
2 Локаторы и ожидания
- Локаторы: id, css, xpath
Восемь стратегий поиска элементов в Selenium: чем хорош By.ID, когда CSS-селектор побеждает XPath и как писать локаторы, которые переживут редизайн.
- Явные и неявные ожидания
Почему UI-тесты мигают, чем плох implicit wait и time.sleep и как правильно ждать элемент через WebDriverWait и expected_conditions в Selenium.
- Работа с элементами
find_element и find_elements, чтение текста и атрибутов, проверка видимости и доступности, а также борьба с NoSuchElementException и StaleElementReferenceException.
- Локаторы: id, css, xpath
3 Взаимодействие со страницей
- Формы: ввод, клики, выпадающие списки
send_keys и clear, ElementClickInterceptedException и перекрытые кнопки, класс Select для тегов select, чекбоксы и радиокнопки — как правильно работать с формами в Selenium.
- Фреймы, вкладки и алерты
switch_to.frame и возврат в default_content, работа с несколькими вкладками через window_handles, обработка нативных alert, confirm и prompt в Selenium.
- Скриншоты и отладка падений
Скриншот при падении теста как обязательная практика: save_screenshot, page_source, логи консоли, автоматические артефакты через pytest-хук и быстрый разбор падений в CI.
- Формы: ввод, клики, выпадающие списки
4 Архитектура тестов
- Page Object Model
Page Object Model в Selenium на Python: почему локаторы внутри тестов убивают проект, как описать страницу классом и переписать тест на язык пользователя.
- pytest и фикстуры
Фикстуры pytest для Selenium: driver с setup и teardown через yield, scope фикстур, conftest.py, маркеры и скриншот при падении. Почему фикстура лучше setUp.
- Параметризация и data-driven тесты
pytest.mark.parametrize в Selenium-тестах: как проверить форму на наборе валидных и невалидных значений, вынести данные из кода и получить читаемый отчёт.
- Page Object Model
5 Запуск и CI
- Headless-режим и запуск в CI
Как запустить Selenium без графики: --headless=new, размер окна, Docker и --no-sandbox, пайплайн GitHub Actions и почему в CI тесты падают чаще.
- Selenium Grid и параллельный запуск
Selenium Grid 4: hub и узлы в docker-compose, Remote WebDriver, параллельный прогон через pytest-xdist и требования к тестам — независимость и свои данные.
- Отчёты и анализ падений
Allure для Selenium: шаги, вложения и скриншоты падений, разница между failed и broken, откуда берутся флаки-тесты и почему retry — лечение симптома.
- Headless-режим и запуск в CI