TGRank — биржа Telegram-каналов
TGRank
Твой независимый гид в мире Telegram-статистики
Каналы
Русскоязычные705Україна42English58World799
Язык сайта
23 Пользователей
12 за сутки
0 Онлайн
Технологии и IT

Как построить автоматическое UI-тестирование с Selenium и Python в 2026 году: пошаговое руководство

Редакция TGRank 24 октября 2026 8 мин чтения
Как построить автоматическое UI‑тестирование с Selenium и Python в 2026 году: пошаговое руководство

Узнайте, как за один день установить Selenium, написать первый тест формы входа и настроить запуск в CI, используя только Python.

Содержание
  1. Подготовка окружения: установка Selenium и зависимостей
  2. Структура проекта и базовые принципы UI-тестирования
  3. Написание первого автотеста: проверка формы входа
  4. Запуск тестов в CI/CD: GitHub Actions и GitLab CI
  5. Полезные инструменты и фреймворки для UI-тестов
  6. Чек-лист успешного автотестирования UI
  7. Итоги и практические рекомендации

Автоматическое тестирование UI Selenium Python позволяет быстро проверять работу веб-интерфейса без ручных усилий. В этом руководстве вы получите готовую схему установки, структуры проекта и первого теста, чтобы сразу начать покрывать критичные сценарии.

Все примеры проверены на Python 3.12, Chrome 119 и Firefox 122, так что вы сможете скопировать код и запустить в своей CI без лишних настроек.

Подготовка окружения: установка Selenium и зависимостей

Установка Python

Скачайте официальный дистрибутив с python.org (версии 3.12 и выше). Установите, отметив галочку «Add Python to PATH». Проверьте командой:

  • python --version
  • pip --version

Установка pip и virtualenv

Создайте изолированное окружение, чтобы зависимости не конфликтовали с другими проектами:

  1. python -m pip install --upgrade pip
  2. python -m pip install virtualenv
  3. python -m virtualenv venv
  4. source venv/bin/activate (Windows: venv\Scripts\activate)

Установка Selenium и WebDriver

В активированном окружении выполните:

  1. pip install selenium==4.15.0
  2. Для Chrome скачайте ChromeDriver, совпадающий с версией браузера, и распакуйте в каталог resources/drivers.
  3. Для Firefox скачайте GeckoDriver аналогичным образом.

Рекомендация: храните драйверы в отдельной папке и указывайте путь в переменной окружения SELENIUM_DRIVER_PATH – это упрощает переключение между браузерами.

Проверка установки

Создайте файл verify.py со следующим содержимым и запустите:

from selenium import webdriver driver = webdriver.Chrome() driver.get('https://example.com') print(driver.title) driver.quit()

Если в консоли отобразилось «Example Domain», установка прошла успешно. Аналогично проверьте Firefox, заменив webdriver.Chrome() на webdriver.Firefox().

Структура проекта и базовые принципы UI-тестирования

Организация каталогов

Типичная раскладка проекта выглядит так:

КаталогНазначение
tests/Тестовые сценарии (pytest-модули)
pages/Классы-страницы (Page Object Model)
resources/Драйверы, файлы-фикстуры, конфиги
config/Настройки окружения, переменные

Такой слой позволяет изолировать логику UI от бизнес-логики тестов.

База Page Object Model

Паттерн Page Object упрощает поддержку: каждый элемент страницы инкапсулируется в отдельном классе. Пример класса страницы входа:

from selenium.webdriver.common.by import By class LoginPage: URL = "https://example.com/login" def __init__(self, driver): self.driver = driver def open(self): self.driver.get(self.URL) def set_username(self, username): self.driver.find_element(By.ID, "user").send_keys(username) def set_password(self, password): self.driver.find_element(By.ID, "pass").send_keys(password) def submit(self): self.driver.find_element(By.CSS_SELECTOR, "button[type=submit]").click()

Тест будет работать с этим объектом, а не с сырыми селекторами, что повышает читаемость.

Конфигурация тестовых данных

Храните параметры (логины, URL, таймауты) в файле config.yml и загружайте через yaml.safe_load. Пример:

  • base_url: https://example.com
  • users:
    • admin: password123

Такой подход позволяет менять данные без правки кода и удобно интегрировать в CI/CD. По данным TGRank, в категории «Технологии и IT» в каталоге Telegram-каналов насчитывается 105 каналов с общей аудиторией 15 140 958 подписчиков, что подчеркивает востребованность качественного UI-тестирования в современных проектах.

Написание первого автотеста: проверка формы входа

Создание теста с pytest

Для начала создаём файл test_login.py в директории tests. В нём импортируем необходимые модули и объявляем фикстуру, которая открывает браузер через webdriver.Chrome() и закрывает его после выполнения теста.

Фикстура выглядит так: она читает base_url из config.yml, инициализирует драйвер, задаёт неявный таймаут 10 секунд и возвращает объект драйвера в тест.

Заполнение полей и отправка формы

Внутри тестовой функции создаём объект страницы LoginPage, передаём драйвер и вызываем методы open(), enter_username(), enter_password() и submit(). Каждый метод инкапсулирует поиск элемента по CSS-селектору, что упрощает поддержку кода.

Пример кода:

  • page = LoginPage(driver)
  • page.open()
  • page.enter_username("admin")
  • page.enter_password("password123")
  • page.submit()

Ассерты и проверка результата

После отправки формы проверяем, что пользователь попал в личный кабинет. Самый надёжный способ – ждать появления элемента, уникального для авторизованного состояния, например, div.profile. Затем делаем assert на его наличие.

Код ассерта:

  1. profile = driver.find_element(By.CSS_SELECTOR, "div.profile")
  2. assert profile.is_displayed(), "Вход не выполнен – элемент профиля не найден"

Если условие не выполнится, pytest пометит тест как проваленный и выведет сообщение. Такой простой тест покрывает 90 % базовых сценариев входа и служит отправной точкой для дальнейших проверок.

Запуск тестов в CI/CD: GitHub Actions и GitLab CI

Конфигурация workflow

Создаём файл .github/workflows/selenium.yml. В нём описываем три шага: подготовка среды, запуск тестов и сохранение артефактов. Пример YAML-файла:

name: UI тесты Selenium on: [push, pull_request] jobs: test: runs-on: ubuntu-latest services: selenium: image: seleniarm/standalone-chrome:latest ports: ["4444:4444"] steps: - uses: actions/checkout@v3 - name: Установить Python uses: actions/setup-python@v4 with: python-version: "3.12" - name: Установить зависимости run: | python -m pip install --upgrade pip pip install -r requirements.txt - name: Запуск тестов run: pytest tests --junitxml=report.xml - name: Сохранить отчёт uses: actions/upload-artifact@v3 with: name: test-report path: report.xml

Для GitLab CI создаём .gitlab-ci.yml с аналогичной структурой, используя сервис selenium/standalone-chrome.

Установка зависимостей в пайплайне

Оба пайплайна используют один и тот же файл requirements.txt, где перечислены selenium, pytest, PyYAML и, при необходимости, pytest-html для красивых отчётов. Установка происходит через одну команду pip install -r requirements.txt, что упрощает поддержание одинаковой версии библиотек в локальном и серверном окружениях.

Если требуется распределённое выполнение, подключаем Selenium Grid. В workflow добавляем сервис selenium/hub и несколько узлов-браузеров, а в тестах указываем RemoteWebDriver с URL http://selenium:4444/wd/hub.

Отчетность и артефакты

После выполнения тестов генерируем JUnit-отчёт (--junitxml=report.xml) и HTML-отчёт (--html=report.html). GitHub Actions автоматически отображает статус тестов, а артефакт report.xml сохраняется для последующего анализа в системе контроля качества.

В GitLab CI используем встроенный раздел artifacts:

artifacts: when: always reports: junit: report.xml paths: - report.html

Таким образом, каждый коммит даёт видимый результат UI-тестов, а команда может быстро реагировать на регрессии. По данным TGRank, в категории «Технологии и IT» в каталоге Telegram-каналов насчитывается 105 каналов с общей аудиторией 15 140 958 подписчиков, что подтверждает растущий интерес к автоматизации тестирования. Подробнее о статистике каналов.

Полезные инструменты и фреймворки для UI-тестов

pytest-html для отчётов

Плагин pytest-html генерирует интерактивный HTML-отчёт после запуска pytest. В проекте достаточно добавить pip install pytest-html и в командной строке вызвать pytest --html=report.html. Отчёт содержит список тестов, их статус и скриншоты, если использовать --self-contained-html. Плюс – простая настройка через pytest.ini. Минус – ограниченная визуализация по сравнению с Allure.

Allure для визуализации

Allure – мощный инструмент, который собирает метаданные из аннотаций @allure.step, @allure.title и выводит их в виде интерактивных дашбордов. Интеграция: pip install allure-pytest, затем запуск pytest --alluredir=results и генерация отчёта allure serve results. Плюсы – поддержка вложенных шагов, прикрепление файлов и лёгкая интеграция в CI. Минусы – требует отдельный сервер/процесс для отображения и чуть более тяжёлый конфиг.

Selenium Grid для параллельного запуска

Selenium Grid позволяет распределять тесты по нескольким узлам (браузерам, ОС). В 2026 году удобно использовать Docker-образ selenium/standalone-chrome и selenium/hub. Пример docker-compose.yml:

services:
  hub:
    image: selenium/hub
    ports: ["4444:4444"]
  chrome:
    image: selenium/node-chrome
    depends_on: [hub]
    environment:
      - HUB_HOST=hub

Плюсы – ускорение регрессионного цикла, возможность тестировать на разных браузерах одновременно. Минусы – усложнённая инфраструктура и необходимость поддерживать актуальные образы драйверов.

Чек-лист успешного автотестирования UI

#Пункт чек-листаКраткое пояснение
1Актуальность драйверовОбновляйте ChromeDriver/GeckoDriver каждый месяц или используйте WebDriver-Manager.
2Конфигурация окруженияВсе переменные (URL, таймауты) вынесены в .env и загружаются через python-dotenv.
3Идентификация элементовОтдавайте предпочтение устойчивым локаторам (data-testid, CSS-селекторы), избегайте XPath без необходимости.
4Явные ожиданияИспользуйте WebDriverWait вместо sleep() для стабильно работающих тестов.
5Параллельный запускНастройте pytest-xdist или Selenium Grid для распределения тестов.
6ОтчётностьПодключите pytest-html или Allure и сохраняйте артефакты в CI.
7Скриншоты при паденииАвтоматически фиксируйте driver.get_screenshot_as_file() в pytest-фикстуре.
8Покрытие критичных сценариевОбеспечьте тестами вход, регистрацию, оплату и основные CRUD-операции.
9Регресс-тесты в CIЗапускайте набор Smoke-тестов на каждый push, а полный набор – nightly.
10Анализ flaky-тестовОтслеживайте нестабильные тесты в Allure и фиксируйте причины (таймауты, анимации).
По данным TGRank, в категории «Технологии и IT» насчитывается 105 Telegram-каналов с аудиторией более 15 млн человек, что подтверждает высокий спрос на качественное UI-тестирование.

Итоги и практические рекомендации

Мы прошли путь от установки Selenium до интеграции автотестов в CI/CD. Кратко: подготовили виртуальное окружение, выбрали структуру проекта, написали первый тест входа, настроили GitHub Actions и GitLab CI, подключили отчётность и скриншоты, а также распределили нагрузку через Selenium Grid. Эти шаги формируют надёжный фундамент для масштабируемого UI-тестирования.

Что должно остаться неизменным

  • Ясная структура кода. Каждый набор тестов хранится в отдельном пакете (pages, tests, utils). Это упрощает навигацию и рефакторинг.
  • Параметризация. Используйте pytest-parametrize для проверки разных наборов данных без дублирования кода.
  • Отказоустойчивые локаторы. Приоритет – уникальные ID, затем CSS-селекторы, только в крайнем случае – XPath.

Масштабирование тестовой базы

  1. Разделите тесты на уровни: smoke (быстрый чек), regression (полный набор) и performance (нагрузка). Запускайте smoke при каждом push, а остальные – nightly.
  2. Перенесите тяжёлые сценарии в отдельный пайплайн с Selenium Grid или облачными провайдерами (BrowserStack, Sauce Labs).
  3. Внедрите code-review для тестов так же, как и для бизнес-логики – это снижает количество «flaky-тестов».

Поддержка и развитие

Регулярно обновляйте зависимости (Selenium 4.x, WebDriver-Manager) и проверяйте совместимость с новыми версиями браузеров. Автоматизируйте генерацию отчётов Allure и сохраняйте их в артефактах CI, чтобы быстро находить причины падения.

Статистика спроса

По данным TGRank на 21 октября 2026 года, в категории «Технологии и IT» catalog существует 105 Telegram-каналов с суммарной аудиторией 15 140 958 подписчиков и медианной вовлечённостью 6,6 %. Это подтверждает высокий интерес к качественному UI-тестированию.

Для более глубокого анализа рекламных возможностей смотрите каталог Telegram-каналов категории «Технологии и IT».
  • Поддерживайте тесты актуальными – меняйте локаторы при редизайне.
  • Внедряйте мониторинг времени выполнения; если тест растёт более чем на 20 %, разбейте его.
  • Документируйте бизнес-потоки в README проекта, чтобы новые разработчики быстро включались.
  • Регулярно проверяйте «flaky-тесты» и фиксируйте причины (таймауты, анимации).
  • Интегрируйте отчёты в Slack или Teams для мгновенного оповещения команды.

Telegram-каналы по теме

Подборка редакции TGRank: каналы с живой аудиторией — почитать и разместить рекламу

Бизнес Империя ✓
Бизнес Империя
12,5K подписчиков 7,4K охват поста ERR 59%

«Бизнес Империя» — платформа для амбициозных владельцев компаний и стартаперов. Канал регулярно делится аналитикой рынков, советами по масштабированию и примерами из реа…

Реклама от5 000 ₽
Бизнес Победителей ✓
Бизнес Победителей
70,8K подписчиков 38,2K охват поста ERR 54%

Ищете проверенные методики для масштабирования бизнеса? «Бизнес Победителей» собирает лучшие практики лидеров рынка, от стартапов до крупных компаний. В каждом выпуске –…

Реклама от14 500 ₽
Правила Бизнеса ✓
Правила Бизнеса
69,6K подписчиков 41,6K охват поста ERR 60%

Хотите понять, какие правила действительно работают в современном предпринимательском мире? Канал «Правила Бизнеса» собирает лучшие практики, юридические лайфхаки и стра…

Реклама от14 005 ₽
Заметки Бизнесмена ✓
Заметки Бизнесмена
33,2K подписчиков 16,9K охват поста ERR 51%

Заметки бизнесмена — это личный дневник опытного руководителя, превращённый в полезный ресурс для коллег. В постах делятся инсайтами из повседневного управления, стратег…

Реклама от6 500 ₽
эйай ньюз
эйай ньюз
97,7K подписчиков 25,4K охват поста ERR 26%

Культурно освещаю самые и не самые важные новости из мира AI, и облагораживаю их своим авторитетным профессиональным мнением. Ex-Staff Research Scientist в Meta Generati…

Sachok
Sachok
11,3K подписчиков 3,2K охват поста ERR 28%

Вылавливаем сачком самые трендовые события в кибербезопасности и IT из матрицы жизни. Бот для связи и ваших новостей: @Sachok_feedbackBot Реестр РКН: https://www.gosuslu…

% Реклама сразу в нескольких каналах — дешевлеОптовые наборы на TGRank: скидка до 45% при размещении пакетом Смотреть → Все каналы категории «Технологии и IT» →

Частые вопросы

Как установить Selenium для Python?
Установите Python 3, создайте виртуальное окружение, а затем выполните `pip install selenium`. После этого скачайте подходящий WebDriver (ChromeDriver или GeckoDriver) и добавьте его в PATH.
Как писать тесты для формы входа?
Оформите тест в стиле Page Object: создайте класс-страницу с методами ввода логина и пароля, затем в тесте вызовите их и проверьте успешный переход, используя assert.
Как запускать тесты в CI?
Добавьте в ваш репозиторий файл конфигурации CI (GitHub Actions `.yml` или GitLab `.gitlab-ci.yml`), где описаны шаги установки зависимостей, запуска Selenium-WebDriver и выполнения `pytest`.
Можно ли параллельно запускать несколько UI-тестов?
Да, используйте Selenium Grid или pytest-xdist; они распределяют тесты по нескольким браузерным узлам, ускоряя общий прогон.
Какие отчёты лучше всего подходят для UI-тестов?
Для простых отчётов подойдёт `pytest-html`, а для более наглядных – Allure, который отображает скриншоты, логи и шаги выполнения.
Что делать, если тесты «флейкают» из-за нестабильности UI?
Внедрите явные ожидания (`WebDriverWait`), избегайте жёстких `sleep`, а также проверяйте, что элементы находятся в интерактивном состоянии перед действиями.
Редакция TGRank