Гид по технологиям

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

9 min read Автоматизация Обновлено 18 Dec 2025
Selenium WebDriver с Python: установка и настройка
Selenium WebDriver с Python: установка и настройка

Использование Selenium с 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

  1. Скачайте и установите Python с официального сайта: https://www.python.org/downloads/windows/.
  2. Убедитесь, что при установке отмечена опция “Add Python to PATH”.
  3. Откройте 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 selenium

Fedora:

sudo dnf install python3 python3-pip
pip3 install selenium

Arch Linux:

sudo pacman -S python python-pip
pip install selenium

На macOS

  1. Скачайте инсталлятор Python с https://www.python.org/downloads/macos/ или установите через Homebrew:
brew install python
  1. Установите Selenium:
pip3 install selenium

Если используется виртуальное окружение (рекомендуется), активируйте его перед установкой.

Что такое веб-драйвер и зачем он нужен

WebDriver — это двоичный исполняемый файл, который управляет конкретным браузером (ChromeDriver для Chrome, GeckoDriver для Firefox, msedgedriver для Edge, встроенный safaridriver для Safari). Selenium использует REST/HTTP интерфейс драйвера, чтобы посылать команды браузеру.

Важно: версия драйвера обычно должна соответствовать версии браузера (часто — по основной версии, например Chrome 116 ↔ ChromeDriver 116). Несоответствие версий — частая причина ошибок.

Где скачать драйверы и какие они

Также есть удобные библиотеки, которые автоматически скачивают нужный драйвер, например webdriver-manager (python-package). Это альтернатива ручному управлению версиями.

Таблица совместимости (кратко)

БраузерДрайверКомментарий
Google ChromeChromeDriverСовпадение основной версии браузера и драйвера важно
FirefoxGeckoDriverРекомендуется последняя стабильная версия
Microsoft EdgemsedgedriverСовместим с Chromium-версией Edge
Apple SafarisafaridriverВстроен в macOS; включите Remote Automation

Добавление драйвера в PATH

Чтобы запускать драйверы из любой точки, добавьте их расположение в переменную окружения PATH. Ниже — пошаговые инструкции для каждой ОС.

На Windows: добавление драйвера в PATH

  1. Скачайте ZIP с драйвером и распакуйте в папку, например C:\tools\drivers\chromedriver.
  2. Скопируйте путь к папке с исполняемым файлом (например C:\tools\drivers\chromedriver).
  3. Откройте “Этот компьютер“, правой кнопкой кликните по пустому месту и выберите “Свойства”.

Свойства системы — Windows

  1. Нажмите “Дополнительные параметры системы” или “Изменить параметры”.

Изменить настройки Windows

  1. Перейдите на вкладку “Дополнительно” и нажмите “Переменные среды”.

Параметры переменных среды

  1. В разделе “Системные переменные” найдите переменную Path и нажмите “Изменить”.

Редактирование переменной Path

  1. Нажмите “Создать” и вставьте путь к папке с драйвером.

Добавить новый путь в переменную Path

  1. Нажмите OK, закройте окна и откройте новый командный интерфейс, чтобы изменения вступили в силу.

Проверка: в новом CMD выполните:

chromedriver --version

Если драйвер доступен в PATH, вы увидите версию. Если сообщение похоже на:

'chromedriver' is not recognized as an internal or external command,
operable program or batch file.

значит либо путь указан неверно, либо окно терминала нужно перезапустить.

На Linux: добавление драйвера в PATH

  1. Скачайте и распакуйте драйвер, например в /opt/drivers/chromedriver/.
  2. Откройте терминал (Ctrl+Alt+T).
  3. Отредактируйте профиль пользователя (пример для bash):
nano ~/.profile
  1. Добавьте в конец файла строку (замените путь на ваш):
export PATH="$PATH:/opt/drivers/chromedriver"
  1. Сохраните файл и примените изменения:
source ~/.profile
  1. Проверьте версию драйвера:
chromedriver --version

Альтернатива: поместить исполняемый файл в /usr/local/bin или /usr/bin (требуются права sudo):

sudo mv chromedriver /usr/local/bin/
sudo chmod +x /usr/local/bin/chromedriver

На macOS: добавление драйвера в PATH

  1. Распакуйте драйвер, например в /usr/local/bin/ или в /opt/drivers/.
  2. Чтобы добавить путь глобально, отредактируйте файл /etc/paths (нужен sudo):
sudo nano /etc/paths
  1. Добавьте строку с путём к драйверу в конец файла, сохраните.
  2. Либо поместите исполняемый файл напрямую в /usr/local/bin и убедитесь, что он исполняемый:
sudo mv chromedriver /usr/local/bin/
sudo chmod +x /usr/local/bin/chromedriver
  1. Проверьте:
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.

Отладка и типичные ошибки

  1. Несовпадение версии драйвера и браузера — ошибка запуска или “session not created”.
  2. “chromedriver is not recognized” — Windows не видит драйвер в PATH; перезапустите терминал/учётную запись после правок.
  3. Проблемы с правами в Linux/macOS — проверьте permission: chmod +x chromedriver.
  4. Элементы не находятся — используйте правильные локаторы (ID, CSS, XPath) и явные ожидания.
  5. Headless-браузеры иногда ведут себя иначе (например, шрифты или размеры); при отладке запуск выполняйте в видимом режиме.

Чек-лист перед запуском теста (быстрый)

  • Python 3.7+ установлен
  • pip установлен и доступен
  • selenium установлен в виртуальном окружении
  • Драйвер скачан и доступен в PATH или используется webdriver-manager
  • Версия драйвера совместима с версией браузера
  • Для Safari включена Remote Automation
  • CI-агент имеет доступ к дисплею (или используется headless/ xvfb)

Ролевые чек-листы

Разработчик:

  • Проверить локально: скрипт запускается.
  • Добавить тесты в CI-пайплайн.
  • Убедиться, что используются явные ожидания.

QA-инженер:

  • Составить сценарии, покрывающие критические пути.
  • Настроить тест-данные и предусмотреть очистку после тестов.

DevOps/инженер CI:

  • Добавить шаг установки зависимостей и драйверов в конвейер.
  • Обеспечить прокси/сеть для скачивания драйверов на этапе сборки.

Примеры тест-кейсов и критерии приёмки

Пример простого теста: поисковая форма на странице должна возвращать результаты.

Критерии приёмки:

  • Открыть главную страницу.
  • Найти элемент поиска (по name=”q”).
  • Ввести запрос и отправить.
  • Дождаться результатов (выполнить ожидание наличия результатов).
  • Убедиться, что title страницы содержит ключевые слова.

Acceptance-steps (проверяем по шагам):

  1. Страница открыта без ошибок (HTTP 200, отсутствие JS-исключений в консоли при простых проверках).
  2. Поле поиска интерактивно.
  3. Результаты отображаются в течение 10 секунд.

Методология: как организовать автотесты с Selenium

  1. Разделение: логика теста (asserts) и шаги взаимодействия — используйте Page Object Model (POM) для поддержки.
  2. Изоляция: каждый тест должен восстанавливать состояние (через фикстуры/фикстуры teardown).
  3. Ожидания: избегайте time.sleep, применяйте WebDriverWait и ExpectedConditions.
  4. Параллельность: для параллельных запусков используйте 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)

  1. Локальная проверка и написание базовых тестов.
  2. Настройка виртуального окружения и фикстур.
  3. Подготовка CI: установка Python, Selenium, драйверов.
  4. Параллельные прогоны через Grid или облако.
  5. Мониторинг стабильности и рефакторинг POM.

Итог

Selenium WebDriver остаётся мощным и гибким инструментом для автоматизации браузеров. Для Python-пользователей установка проста: pip install selenium, затем скачайте соответствующий драйвер и добавьте его в PATH или используйте автоматизатор загрузки драйверов. При корректной настройке Selenium позволяет покрывать UI-тестированием большинство сценариев, а при интеграции с CI и хорошей практикой написания тестов — быстро выявлять регрессы.

Важно: выбирайте инструмент под задачу — иногда Playwright или Puppeteer подойдут лучше, но знание Selenium полезно благодаря широкой экосистеме и поддержке множества браузеров.


Важно: используйте явные ожидания, храните секреты вне репозитория и добавляйте артефакты при падении тестов.

Краткое резюме представлено ниже.

Поделиться: X/Twitter Facebook LinkedIn Telegram
Автор
Редакция

Похожие материалы

Раздаточные материалы PowerPoint: создание и печать
Презентации

Раздаточные материалы PowerPoint: создание и печать

Как открыть tar.gz в Windows
Windows

Как открыть tar.gz в Windows

Скрыть и показать заголовки в Excel
Excel

Скрыть и показать заголовки в Excel

Хват «когтя» в играх: как, зачем и когда использовать
Игры

Хват «когтя» в играх: как, зачем и когда использовать

Как заблокировать пользователя в Instagram
Социальные сети

Как заблокировать пользователя в Instagram

Шифрование почты на Android через OpenKeychain
Безопасность

Шифрование почты на Android через OpenKeychain