Python: Selenium
Теория: Настройка
Перед началом работы с Selenium устанавливается язык Python. Он используется для написания тестов и взаимодействия с браузером через WebDriver. Проверка установки выполняется командой:
Если выводится версия вроде Python 3.14.2, Python уже установлен. Если система отвечает, что команда не найдена, Python скачивается с официального сайта python.org. При установке выбирается пункт Add Python to PATH - без этого терминал не сможет запускать команды Python.
Инструмент uv и создание виртуального окружения
Hexlet-проекты используют uv — быстрый менеджер для Python-окружений и зависимостей. Если он ещё не установлен, поставьте его один раз:
Дальше все команды выполняются через uv. Он сам создаёт виртуальное окружение и управляет пакетами:
Команда создаёт папку .venv рядом с проектом. Активация окружения остаётся привычной, потому что uv использует стандартный механизм venv.
Windows:
macOS и Linux:
После активации в начале строки терминала появится отметка (.venv). Это значит, что библиотеки ставятся внутрь проекта. Проверить путь к активированному Python можно командами:
Они должны указывать на интерпретатор внутри каталога .venv.
Установка зависимостей
После создания виртуального окружения устанавливаются библиотеки, которые понадобятся для работы с автотестами. Основные — selenium, pytest и allure-pytest.
seleniumуправляет браузером и выполняет действия на странице: открывает сайт, кликает по элементам, вводит текст, проверяет результат.pytestзапускает тесты, управляет их порядком и выводит отчёты о результатах.allure-pytestсоздаёт наглядные отчёты с шагами тестов, скриншотами и метками, что удобно при командной работе.
Все дальнейшие зависимости добавляются через uv add — команда сразу обновляет pyproject.toml и uv.lock:
Проверить установленные пакеты можно командой:
uv add автоматически создаёт и обновляет pyproject.toml и uv.lock. Эти файлы фиксируют версии пакетов и попадают под контроль версий. На другой машине достаточно выполнить:
uv создаст виртуальное окружение (если нужно) и установит зависимости строго по lock-файлу.
После установки зависимостей можно проверить работу Selenium, открыв браузер вручную через Python-интерпретатор:
Если окно браузера открылось и закрылось без ошибок, все зависимости установлены корректно.
Структура проекта для автотестов
Когда все зависимости установлены, создаётся структура проекта. От неё зависит, насколько удобно будет писать, поддерживать и запускать тесты. В простом виде структура выглядит так:
Папка tests содержит файлы с тестами. Каждый тест — это отдельная функция, начинающаяся с test_. Например, test_login.py может содержать проверку авторизации:
Папка pages используется, если проект построен по паттерну Page Object. В каждом файле описывается отдельная страница сайта — элементы интерфейса и действия с ними. Такой подход делает тесты короче и понятнее.
Файл conftest.py хранит фикстуры Pytest. Например, создание и закрытие драйвера для каждого теста:
Теперь каждый тест можно писать компактно:
Папка utils хранит вспомогательные функции: обработку данных, создание скриншотов, генерацию тестовых пользователей. Папка reports используется для отчётов Allure. После запуска тестов команда
соберёт данные, а готовый отчёт откроется командой
Файл pytest.ini хранит настройки фреймворка: путь к тестам, уровень логов, параметры запуска. Сами зависимости и их версии лежат в pyproject.toml и uv.lock, которые обновляет uv.
Настройка запуска тестов с Pytest
После установки зависимостей и создания структуры проекта настраивается запуск тестов. Для этого используется Pytest - фреймворк, который автоматически находит тесты, выполняет их и выводит подробный отчёт.
Pytest ищет все файлы, имена которых начинаются с test_ или заканчиваются на _test.py. Внутри таких файлов запускаются функции, начинающиеся с test_. Например:
Если выполнить в терминале команду
Pytest пройдёт по всем подкаталогам проекта, найдёт файлы тестов и выведет результат:
Точка (.) означает успешное выполнение теста. Если тест упадёт, в консоли появится сообщение с причиной ошибки и строкой, на которой она произошла.
Для удобства создаётся файл настроек pytest.ini в корне проекта:
Параметр testpaths указывает директорию, где искать тесты. Опция -v включает подробный режим (verbose), а --tb=short делает вывод ошибок короче и понятнее.
Чтобы каждый тест автоматически открывал и закрывал браузер, в проект добавляется фикстура. В файле conftest.py:
Теперь в тестах можно использовать аргумент browser, не создавая драйвер вручную:
Запуск выполняется командой:
Запуск и отчёты
Pytest умеет не только запускать тесты, но и сохранять результаты. Чтобы передать данные в Allure, используется дополнительный параметр:
После завершения тестов в папке reports появятся файлы с информацией о каждом запуске: имя теста, статус, длительность, причина ошибки.
Allure преобразует эти данные в наглядный отчёт. Для этого используется команда:
Она открывает интерактивную страницу в браузере, где показаны пройденные и упавшие тесты, шаги выполнения, скриншоты и логи. Такой отчёт удобно использовать при командной работе или передаче результатов тестирования.
Pytest также позволяет запускать не все тесты сразу, а выборочно. Это удобно, когда нужно быстро проверить одну часть сценария. Например, запуск только одного файла:
или одной функции внутри файла:
Фильтрация помогает экономить время при отладке. Вместо полного прогона всех автотестов можно запускать только нужные проверки.


