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

Автоматизация стала неотъемлемой частью разработки ПО. Вместо ручных действий тестировщики и разработчики используют фреймворки, которые выполняют повторяющиеся задачи несколькими строками кода.
Selenium — один из таких инструментов для автоматизированного тестирования веб-приложений. В его составе есть несколько компонентов; наиболее важный для взаимодействия с браузерами — Selenium WebDriver. В этой статье — вводная информация о Selenium и подробное руководство по установке и настройке Selenium WebDriver для Python на трёх популярных ОС.
Что такое Selenium
Selenium — это фреймворк с открытым исходным кодом для автоматизированного тестирования веб-приложений в разных браузерах и на разных платформах. Он поддерживает несколько языков программирования: Java, C#, Python, Perl и другие.
Ключевые компоненты Selenium:
- Selenium IDE — интегрированная среда разработки для записи простых тестов.
- Selenium Remote Control — устаревший компонент для удалённого управления браузером.
- Selenium WebDriver — API для программного управления браузерами (основной объект нашей статьи).
- Selenium Grid — распределённое выполнение тестов на множествах машин/контейнеров.
Каждый компонент решает свою задачу, но в целом Selenium помогает автоматизировать веб-тестирование. Кроме тестов, WebDriver часто используют для веб-скрейпинга и автоматизации рутинных действий в браузере.
Краткое определение: Selenium WebDriver — библиотека для программного управления браузером через нативные интерфейсы браузера.
Кому полезно это руководство
- Тестировщикам, которые хотят запускать автоматические UI-тесты.
- Разработчикам, которым нужно воспроизводить шаги пользователя автоматически.
- Аналитикам и специалистам по безопасности для автоматизации проверок и сканирования.
Установка Selenium WebDriver для Python
Перед установкой Selenium необходимо иметь установленный Python (рекомендуется версия 3.7+). Далее — инструкции по каждой ОС с командами и полезными подсказками.
На Windows
Скачайте Python с официального сайта и установите его: выберите установку для всех пользователей или добавьте Python в PATH в процессе установки.
Ссылки: официальный сайт Python.
Откройте PowerShell или Командную строку (cmd) и установите Selenium через pip:
pip install seleniumЕсли pip не распознаётся, вызовите его через модуль Python:
python -m pip install --upgrade pip
python -m pip install seleniumСоветы и альтернативы:
- Если у вас установлено несколько версий Python, используйте явный вызов: py -3 -m pip install selenium
- Рекомендуется создать виртуальное окружение (venv):
python -m venv venv
venv\Scripts\activate
pip install seleniumНа Linux
Установите Python с помощью пакетного менеджера дистрибутива.
- Debian / Ubuntu:
sudo apt-get update
sudo apt-get install python3 python3-venv python3-pip- Arch Linux:
sudo pacman -S python python-pip- Fedora:
sudo dnf install python3 python3-pip- CentOS / RHEL (может потребоваться EPEL или Software Collections):
sudo yum install python3Затем установите Selenium:
python3 -m pip install --upgrade pip
python3 -m pip install seleniumРекомендуется работать в виртуальном окружении и фиксировать зависимости в requirements.txt:
pip freeze > requirements.txtНа macOS
- Установите Python: скачайте официальный .pkg с python.org или установите через Homebrew:
/bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)"
brew install python- Установите Selenium:
python3 -m pip install --upgrade pip
python3 -m pip install selenium- В macOS удобно использовать pyenv для управления версиями Python.
Настройка WebDriver (драйвера браузера)
Чтобы WebDriver мог управлять браузером, нужно скачать соответствующий исполняемый файл (драйвер) и сделать его доступным в PATH или указать путь к нему в коде.
Selenium поддерживает основные браузеры: Google Chrome, Firefox, Microsoft Edge, Safari. Официальные вебдрайверы:
| Driver Name | Supported Browser | Download |
|---|
| ChromeDriver | Google Chrome | Загрузка | GeckoDriver | Firefox | Загрузка | Edge WebDriver | Microsoft Edge | Загрузка | SafariDriver | Apple Safari | Загрузка
Важно: для каждого драйвера выбирайте версию, совместимую с вашей версией браузера. Например, ChromeDriver имеет привязку к версии Chrome.
Замечание: SafariDriver встроен в macOS для Safari (включается в меню разработчика), для него часто не требуется отдельный загрузочный файл.
Общие рекомендации по месту установки драйвера
- На CI/CD и серверах часто собирают драйвер в контейнере или кладут в системные каталоги (/usr/local/bin на Unix-подобных системах).
- На рабочей станции можно поместить драйвер в папку проекта или в фиксированное место и добавить этот путь в PATH.
На Windows — добавление драйвера в PATH
- Скачайте нужный драйвер и распакуйте ZIP.
- Скопируйте исполняемый файл webdriver (например, chromedriver.exe) в каталог, где будете хранить утилиты, или прямо в каталог проекта.
- Скопируйте полный путь до исполняемого файла.
- Откройте Проводник, выберите Этот компьютер, правой кнопкой — Свойства, затем Дополнительные параметры системы.

- Нажмите Изменить параметры и откройте вкладку Дополнительно, затем Переменные среды.

- В разделе Системные переменные найдите Path и нажмите Изменить.

- Нажмите Создать (New) и вставьте путь к драйверу.

- Подтвердите изменения кнопкой ОК и откройте новый терминал.

Проверка: в новом окне командной строки введите имя драйвера, например:
chromedriverЕсли всё настроено, драйвер запустится и покажет версию. Если появляется ошибка “‘chromedriver’ is not recognized as an internal or external command”, проверьте правильность пути.
На Linux — добавление драйвера в PATH
- Скачайте и распакуйте драйвер.
- Скопируйте исполняемый файл в удобный каталог, например /usr/local/bin или /opt/webdrivers.
Пример с использованием домашнего профиля:
# распаковка и копирование
unzip chromedriver_linux64.zip
sudo mv chromedriver /usr/local/bin/chromedriver
sudo chmod +x /usr/local/bin/chromedriverАльтернативный вариант — добавить директорию в PATH в .profile или .bashrc:
sudo nano /home/username/.profile
# в конце файла добавить
export PATH=$PATH:/pathtodriverПримените изменения: source ~/.profile или откройте новый терминал.
На macOS — добавление драйвера в PATH
- Скачайте и распакуйте драйвер.
- Скопируйте исполняемый файл в /usr/local/bin или добавьте директорию в системный файл путей:
sudo nano /etc/paths
# добавить в конец: /path/to/driver- Сохраните и закройте редактор, откройте новый терминал и проверьте:
chromedriver --versionЕсли терминал возвращает версию — драйвер доступен.
Простой пример автоматизации (Python)
Ниже — минимальный пример, который запускает браузер, открывает страницу и выводит заголовок страницы.
from selenium import webdriver
from selenium.webdriver.common.by import By
import time
# Пример для Chrome (если chromedriver в PATH)
driver = webdriver.Chrome()
try:
driver.get('https://example.com')
time.sleep(1) # короткая пауза для загрузки
title = driver.title
print('Заголовок страницы:', title)
finally:
driver.quit()Примечания:
- В новых версиях Selenium (4.x) можно использовать менеджеры драйверов, чтобы не скачивать драйвер вручную (см. распараграф ниже об альтернативных подходах).
- Для поиска элементов используйте методы find_element(By.ID, ‘id’) и другие стратегии из selenium.webdriver.common.by.
Альтернативы ручной загрузке драйвера
- webdriver-manager (пакеты, которые автоматически скачивают совместимый драйвер):
pip install webdriver-managerПример использования с webdriver-manager:
from selenium import webdriver
from webdriver_manager.chrome import ChromeDriverManager
driver = webdriver.Chrome(ChromeDriverManager().install())- В контейнерах и CI/CD можно использовать образы с уже установленными браузерами и драйверами (Selenium Grid, Docker-образы selenium/standalone).
Преимущество менеджера драйверов — упрощение установки и совместимость версий, но для корпоративных окружений иногда требуется ручное управление версиями.
Частые ошибки и способы их исправления
- “chromedriver is not recognized” — путь к драйверу не добавлен в PATH или терминал открыт до внесения изменений. Откройте новый терминал.
- Несовместимость версий — версия ChromeDriver должна соответствовать версии Chrome. Решение: обновить браузер или скачать подходящую версию драйвера.
- Permission denied на Unix — недостаточно прав на выполнение: выполните chmod +x chromedriver и убедитесь, что файл в каталоге, доступном пользователю.
- Selenium не может найти элемент — используйте явные ожидания (WebDriverWait) вместо time.sleep для стабильности тестов.
Пример явного ожидания:
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC
element = WebDriverWait(driver, 10).until(
EC.presence_of_element_located((By.ID, 'element_id'))
)Роли и чек-листы (быстрая проверка перед запуском тестов)
Разработчик / тестировщик:
- Установлен Python и виртуальное окружение.
- Установлен Selenium в окружении (pip list содержит selenium).
- Драйвер скачан и доступен в PATH или используется webdriver-manager.
- Версия драйвера совместима с браузером.
- Браузер обновлён или фиксирован для стабильности тестов.
- Настроены явные ожидания и обработка исключений в тестах.
Инженер CI/CD:
- Контейнер или runner содержит браузер и драйвер.
- Параметры запуска (headless, дисплей) настроены.
- Логи тестов собираются и доступны для анализа.
Системный администратор:
- Права доступа к директории драйверов настроены корректно.
- Обновления браузеров и драйверов согласованы с командами разработки.
Методология простого рабочего процесса (mini-SOP)
- Создайте виртуальное окружение и установите зависимости (requirements.txt).
- Добавьте в репозиторий небольшую README с инструкцией по установке драйвера локально.
- В тестах используйте параметризацию браузера и конфигурационный файл для указания пути к драйверу.
- Настройте CI для запуска тестов в headless-режиме или на Selenium Grid.
- Собирайте артефакты логов и скриншотов при падениях тестов.
Безопасность и конфиденциальность
- Не храните исполняемые драйверы с правами на запись в каталогах, доступных всем пользователям.
- При автоматизации страниц с аутентификацией используйте безопасные хранилища секретов (не храните пароли в коде).
- Для тестирования приватных ресурсов используйте тестовые учётные записи и ограниченные права.
Критерии приёмки
- Selenium успешно установлен в виртуальном окружении и импортируется в скрипте.
- WebDriver запускается и открывает браузер без ошибок.
- Простой тест (открыть страницу и прочитать заголовок) проходит локально.
- На CI тесты проходят в headless-режиме или на Grid и возвращают стабильный статус ‘passed’.
Когда Selenium может не подойти
- Если нужна высокая производительность парсинга без рендеринга JavaScript — лучше использовать специализированные библиотеки (requests + BeautifulSoup).
- На очень большом масштабе (тысячи параллельных сессий) имеет смысл использовать специализированные решения и распределённые исполнители.
Советы по миграции и совместимости
- При обновлении браузера сначала проверьте совместимость текущего драйвера с новой версией.
- Используйте менеджеры версий браузеров и драйверов в CI для детерминированных результатов.
- Для macOS и Safari проверьте, включён ли режим разработчика в Safari (Develop -> Allow Remote Automation).
Краткое резюме
Selenium WebDriver даёт мощный и гибкий интерфейс для автоматизации браузеров. Для работы с Python достаточно установить пакет selenium, загрузить подходящий драйвер и либо добавить его в PATH, либо использовать менеджер драйверов. Примеры, явные ожидания и проверка совместимости версий помогут сделать тесты стабильными.
Важно: поддерживайте документацию по локальному окружению и автоматизируйте установку драйверов в CI, чтобы избежать «работает у меня».
Если нужно, могу подготовить готовый репозиторий с примером проекта, requirements.txt и настройками для GitHub Actions или GitLab CI.
Похожие материалы
Быстрые настройки Nintendo Switch: как открыть и использовать
Встроить субтитры в видео с Avidemux
Как перестать бояться камеры и начать снимать
Точки восстановления в Windows 11 — включение и создание
Микропривычки: маленькие шаги к большим результатам