Selenium WebDriver с Python: установка и настройка

Автоматизация стала неотъемлемой частью разработки и тестирования ПО. Selenium — один из самых популярных инструментов для автоматизированного тестирования веб-приложений. В этой статье мы последовательно разберём, что такое Selenium, как установить Selenium WebDriver для Python, как настроить драйверы браузеров на разных ОС, как писать простые скрипты и как устранять типичные проблемы.
Что такое Selenium
Selenium — это открытый фреймворк для автоматизации тестирования веб-приложений в разных браузерах и на разных платформах. Он поддерживает несколько языков программирования: Java, C#, Python, JavaScript (Node.js), Ruby и другие.
Ключевые компоненты Selenium:
- Selenium IDE — расширение/инструмент записи и воспроизведения для быстрых скриптов.
- Selenium Remote Control (устаревший) — ранняя реализация для удалённого запуска тестов.
- Selenium WebDriver — основной компонент для управления реальными браузерами через нативные драйверы.
- Selenium Grid — позволяет параллельно запускать тесты на разных машинах/браузерах.
Selenium WebDriver — та часть, с которой обычно начинают: он запускает браузер, выполняет действия (клик, набор текста, навигация), делает скриншоты и возвращает состояние DOM. Помимо тестирования, WebDriver применим для парсинга динамического контента и автоматизации рутинных задач.
Кому подойдёт этот материал
- QA-инженерам, которые хотят запускать автотесты на Python.
- Разработчикам, кто автоматизирует проверки интерфейса или интеграции.
- Аналитикам и специалистам по безопасности для автоматизации сценариев обхода UI.
Подготовка: что нужно знать в одну строку
Python — версия 3.7+; базовое знание pip; понимание командной строки в вашей ОС.
Установка Selenium WebDriver для Python
Selenium — библиотека Python, устанавливается через pip. Приведём команды для Windows, Linux и macOS, а затем разберём установку и настройку драйверов браузеров.
На Windows
- Скачайте и установите Python с официального сайта: https://www.python.org/downloads/windows/.
- Убедитесь, что при установке отмечена опция “Add Python to PATH”.
- Откройте PowerShell или CMD и выполните:
pip install seleniumЕсли pip не найден, используйте модульный вызов Python:
python -m pip install seleniumПримечание: если используется несколько версий Python, явно указывайте нужный интерпретатор, например python3.
На Linux
Установите Python через менеджер пакетов дистрибутива и затем pip. Примеры:
Debian/Ubuntu:
sudo apt update
sudo apt install python3 python3-pip
pip3 install seleniumFedora:
sudo dnf install python3 python3-pip
pip3 install seleniumArch Linux:
sudo pacman -S python python-pip
pip install seleniumНа macOS
- Скачайте инсталлятор Python с https://www.python.org/downloads/macos/ или установите через Homebrew:
brew install python- Установите Selenium:
pip3 install seleniumЕсли используется виртуальное окружение (рекомендуется), активируйте его перед установкой.
Что такое веб-драйвер и зачем он нужен
WebDriver — это двоичный исполняемый файл, который управляет конкретным браузером (ChromeDriver для Chrome, GeckoDriver для Firefox, msedgedriver для Edge, встроенный safaridriver для Safari). Selenium использует REST/HTTP интерфейс драйвера, чтобы посылать команды браузеру.
Важно: версия драйвера обычно должна соответствовать версии браузера (часто — по основной версии, например Chrome 116 ↔ ChromeDriver 116). Несоответствие версий — частая причина ошибок.
Где скачать драйверы и какие они
- ChromeDriver — для Google Chrome (chromedriver): https://sites.google.com/chromium.org/driver/
- GeckoDriver — для Mozilla Firefox (geckodriver): https://github.com/mozilla/geckodriver/releases
- Edge WebDriver — для Microsoft Edge (msedgedriver): https://developer.microsoft.com/microsoft-edge/tools/webdriver/
- Safari — в macOS встроен safaridriver; в Safari нужно включить Remote Automation в меню Develop.
Также есть удобные библиотеки, которые автоматически скачивают нужный драйвер, например webdriver-manager (python-package). Это альтернатива ручному управлению версиями.
Таблица совместимости (кратко)
| Браузер | Драйвер | Комментарий |
|---|---|---|
| Google Chrome | ChromeDriver | Совпадение основной версии браузера и драйвера важно |
| Firefox | GeckoDriver | Рекомендуется последняя стабильная версия |
| Microsoft Edge | msedgedriver | Совместим с Chromium-версией Edge |
| Apple Safari | safaridriver | Встроен в macOS; включите Remote Automation |
Добавление драйвера в PATH
Чтобы запускать драйверы из любой точки, добавьте их расположение в переменную окружения PATH. Ниже — пошаговые инструкции для каждой ОС.
На Windows: добавление драйвера в PATH
- Скачайте ZIP с драйвером и распакуйте в папку, например C:\tools\drivers\chromedriver.
- Скопируйте путь к папке с исполняемым файлом (например C:\tools\drivers\chromedriver).
- Откройте “Этот компьютер“, правой кнопкой кликните по пустому месту и выберите “Свойства”.
- Нажмите “Дополнительные параметры системы” или “Изменить параметры”.
- Перейдите на вкладку “Дополнительно” и нажмите “Переменные среды”.
- В разделе “Системные переменные” найдите переменную Path и нажмите “Изменить”.
- Нажмите “Создать” и вставьте путь к папке с драйвером.
- Нажмите OK, закройте окна и откройте новый командный интерфейс, чтобы изменения вступили в силу.
Проверка: в новом CMD выполните:
chromedriver --versionЕсли драйвер доступен в PATH, вы увидите версию. Если сообщение похоже на:
'chromedriver' is not recognized as an internal or external command,
operable program or batch file.значит либо путь указан неверно, либо окно терминала нужно перезапустить.
На Linux: добавление драйвера в PATH
- Скачайте и распакуйте драйвер, например в /opt/drivers/chromedriver/.
- Откройте терминал (Ctrl+Alt+T).
- Отредактируйте профиль пользователя (пример для bash):
nano ~/.profile- Добавьте в конец файла строку (замените путь на ваш):
export PATH="$PATH:/opt/drivers/chromedriver"- Сохраните файл и примените изменения:
source ~/.profile- Проверьте версию драйвера:
chromedriver --versionАльтернатива: поместить исполняемый файл в /usr/local/bin или /usr/bin (требуются права sudo):
sudo mv chromedriver /usr/local/bin/
sudo chmod +x /usr/local/bin/chromedriverНа macOS: добавление драйвера в PATH
- Распакуйте драйвер, например в /usr/local/bin/ или в /opt/drivers/.
- Чтобы добавить путь глобально, отредактируйте файл /etc/paths (нужен sudo):
sudo nano /etc/paths- Добавьте строку с путём к драйверу в конец файла, сохраните.
- Либо поместите исполняемый файл напрямую в /usr/local/bin и убедитесь, что он исполняемый:
sudo mv chromedriver /usr/local/bin/
sudo chmod +x /usr/local/bin/chromedriver- Проверьте:
chromedriver --versionДля Safari: запустите Safari, в меню Develop включите “Allow Remote Automation” (Разрешить удалённую автоматизацию). В macOS safaridriver запускается без отдельного скачивания.
Пример: простой скрипт на Python с Selenium
Ниже — минимальный пример, который открывает Chrome, переходит на страницу и делает поиск по элементу:
from selenium import webdriver
from selenium.webdriver.common.by import By
from selenium.webdriver.common.keys import Keys
import time
# 1) Инициализация драйвера (предполагается, что chromedriver доступен в PATH)
driver = webdriver.Chrome()
try:
# 2) Открыть страницу
driver.get('https://www.google.com')
# 3) Найти поле поиска по имени и ввести запрос
search = driver.find_element(By.NAME, 'q')
search.send_keys('Selenium WebDriver')
search.send_keys(Keys.RETURN)
# 4) Подождать результаты и распечатать заголовок
time.sleep(2)
print('Title:', driver.title)
finally:
# 5) Закрыть браузер
driver.quit()Советы:
- Используйте явные ожидания WebDriverWait вместо time.sleep для надёжности.
- Запускайте браузер в режиме без головы (headless) для CI/CD при необходимости.
Пример с WebDriverWait:
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC
wait = WebDriverWait(driver, 10)
element = wait.until(EC.presence_of_element_located((By.NAME, 'q')))Альтернативы и дополнения
- webdriver-manager (python): автоматически скачивает и управляет драйверами, избавляет от ручной установки.
- Playwright: современная библиотека от Microsoft для автоматизации браузеров; работает с контекстами и имеет более предсказуемые ожидания.
- Puppeteer (Node.js): автоматизация Chromium/Chrome для экосистемы JavaScript.
Когда Selenium может быть не лучшим выбором: если нужен быстрый неизменный API для современных сайтов с высоким уровнем параллелизма и гарантиями тестовой изоляции — рассмотрите Playwright.
Отладка и типичные ошибки
- Несовпадение версии драйвера и браузера — ошибка запуска или “session not created”.
- “chromedriver is not recognized” — Windows не видит драйвер в PATH; перезапустите терминал/учётную запись после правок.
- Проблемы с правами в Linux/macOS — проверьте permission:
chmod +x chromedriver. - Элементы не находятся — используйте правильные локаторы (ID, CSS, XPath) и явные ожидания.
- Headless-браузеры иногда ведут себя иначе (например, шрифты или размеры); при отладке запуск выполняйте в видимом режиме.
Чек-лист перед запуском теста (быстрый)
- Python 3.7+ установлен
- pip установлен и доступен
- selenium установлен в виртуальном окружении
- Драйвер скачан и доступен в PATH или используется webdriver-manager
- Версия драйвера совместима с версией браузера
- Для Safari включена Remote Automation
- CI-агент имеет доступ к дисплею (или используется headless/ xvfb)
Ролевые чек-листы
Разработчик:
- Проверить локально: скрипт запускается.
- Добавить тесты в CI-пайплайн.
- Убедиться, что используются явные ожидания.
QA-инженер:
- Составить сценарии, покрывающие критические пути.
- Настроить тест-данные и предусмотреть очистку после тестов.
DevOps/инженер CI:
- Добавить шаг установки зависимостей и драйверов в конвейер.
- Обеспечить прокси/сеть для скачивания драйверов на этапе сборки.
Примеры тест-кейсов и критерии приёмки
Пример простого теста: поисковая форма на странице должна возвращать результаты.
Критерии приёмки:
- Открыть главную страницу.
- Найти элемент поиска (по name=”q”).
- Ввести запрос и отправить.
- Дождаться результатов (выполнить ожидание наличия результатов).
- Убедиться, что title страницы содержит ключевые слова.
Acceptance-steps (проверяем по шагам):
- Страница открыта без ошибок (HTTP 200, отсутствие JS-исключений в консоли при простых проверках).
- Поле поиска интерактивно.
- Результаты отображаются в течение 10 секунд.
Методология: как организовать автотесты с Selenium
- Разделение: логика теста (asserts) и шаги взаимодействия — используйте Page Object Model (POM) для поддержки.
- Изоляция: каждый тест должен восстанавливать состояние (через фикстуры/фикстуры teardown).
- Ожидания: избегайте time.sleep, применяйте WebDriverWait и ExpectedConditions.
- Параллельность: для параллельных запусков используйте Grid или облачные провайдеры (BrowserStack, Sauce Labs).
Security и приватность
- Не храните секреты (пароли, API-ключи) в коде тестов — используйте переменные окружения или тайны CI.
- При автоматизации учесть GDPR: не логируйте персональные данные.
Полезные команды и сниппеты (cheat sheet)
Узнать версию chromedriver:
chromedriver --versionСделать исполняемым файл:
chmod +x chromedriverУстановить webdriver-manager (опция):
pip install webdriver-managerПример инициализации драйвера с webdriver-manager:
from selenium import webdriver
from webdriver_manager.chrome import ChromeDriverManager
driver = webdriver.Chrome(ChromeDriverManager().install())Этот подход упрощает управление версиями драйверов в CI.
Когда Selenium не сработает — ограничения и контрпримеры
- Если приложение использует очень строгую защиту от ботов (CAPTCHA), Selenium сам по себе не решит проблему.
- Для мобильных приложений нужен Appium (Selenium-подобный инструмент для мобильных).
- Для задач API-тестирования Selenium не нужен — используйте HTTP-клиенты (requests, httpx).
Краткий словарь (1‑строчные определения)
- WebDriver: двоичный драйвер для управления браузером.
- Locator: способ найти элемент на странице (ID, CSS, XPath).
- Headless: режим работы браузера без интерфейса.
- Page Object Model: шаблон проектирования для тестов UI.
Рекомендации для CI/CD
- Запускайте тесты в выделенных контейнерах/раннерах с предустановленными драйверами.
- Перекладывайте скачивание драйверов в этап подготовки образа (image baking) для стабильности.
- Включайте артефакты (скриншоты, логи) при падении теста.
Короткий план внедрения (roadmap)
- Локальная проверка и написание базовых тестов.
- Настройка виртуального окружения и фикстур.
- Подготовка CI: установка Python, Selenium, драйверов.
- Параллельные прогоны через Grid или облако.
- Мониторинг стабильности и рефакторинг POM.
Итог
Selenium WebDriver остаётся мощным и гибким инструментом для автоматизации браузеров. Для Python-пользователей установка проста: pip install selenium, затем скачайте соответствующий драйвер и добавьте его в PATH или используйте автоматизатор загрузки драйверов. При корректной настройке Selenium позволяет покрывать UI-тестированием большинство сценариев, а при интеграции с CI и хорошей практикой написания тестов — быстро выявлять регрессы.
Важно: выбирайте инструмент под задачу — иногда Playwright или Puppeteer подойдут лучше, но знание Selenium полезно благодаря широкой экосистеме и поддержке множества браузеров.
Важно: используйте явные ожидания, храните секреты вне репозитория и добавляйте артефакты при падении тестов.
Краткое резюме представлено ниже.
Похожие материалы
Раздаточные материалы PowerPoint: создание и печать
Как открыть tar.gz в Windows
Скрыть и показать заголовки в Excel
Хват «когтя» в играх: как, зачем и когда использовать