Selenium Python: автоматизация браузера и веб-тестирование

Если ты хоть раз сталкивался с рутиной проверки верстки, тестированием форм или парсингом данных с сайтов, то наверняка слышал про Selenium. Это не просто очередная библиотека для автоматизации браузера — это твой персональный бот, который может делать почти всё, что ты делаешь руками: кликать, скроллить, логиниться, даже ждать загрузки AJAX. А если ты автоматизируешь тесты или хочешь быстро проверить, как сайт работает в разных браузерах — Selenium твой лучший друг.

Возможности Selenium + Python

  • Автоматизация браузера: Chrome, Firefox, Edge, Safari и даже headless-режим.
  • Заполнение форм, клик по кнопкам, работа с выпадающими списками.
  • Скриншоты, прокрутка, работа с куками и локальным хранилищем.
  • Тестирование UI, интеграция с pytest, unittest, CI/CD пайплайнами.
  • Работа с динамическими страницами (AJAX, SPA).

Что требуется (требования, ОС, железо)

  • ОС: Windows, Linux, macOS — работает везде.
  • Python: 3.7+ (рекомендую всегда использовать последние минорные версии).
  • Браузер: Любой современный. Для headless — Chrome/Chromium или Firefox.
  • WebDriver: Специальный драйвер под твой браузер (например, chromedriver для Chrome).
  • Железо: Любой современный ноут/сервер. На CI/CD можно запускать в headless, даже на VPS без GUI.

Установка — пошаговая инструкция

Самый важный и часто ломающий мозг этап. Вот как сделать всё правильно:

  1. Установи Python и pip (если ещё нет).
    python --version и pip --version должны работать из консоли.
  2. Создай виртуальное окружение (опционально, но очень советую):
    python -m venv venv
    source venv/bin/activate (Linux/Mac) или venv\Scripts\activate (Windows)
  3. Ставим сам Selenium:
    pip install selenium
  4. Скачай WebDriver для своего браузера:

    ВАЖНО: Версия WebDriver должна совпадать с версией браузера!
    Распакуй драйвер и положи его в папку, которая есть в PATH, или укажи полный путь в коде.

  5. Проверь установку:
    python
    from selenium import webdriver
    driver = webdriver.Chrome()  # или Firefox(), Edge()
    driver.get('https://google.com')
    driver.quit()
    

    Если браузер открылся и закрылся — всё ок!

Подробнее в официальной инструкции.

Использование: команды и варианты

Вот базовые штуки, которые ты будешь юзать 99% времени:

  • Запуск браузера:
    
    from selenium import webdriver
    driver = webdriver.Chrome()  # можно указать options
        
  • Открыть страницу:
    driver.get('https://example.com')
  • Поиск элементов:
    • driver.find_element('id', 'myid')
    • driver.find_element('name', 'username')
    • driver.find_element('xpath', '//button[@type="submit"]')
    • driver.find_element('css selector', '.btn.btn-primary')
    • Аналогично find_elements — для списка.
  • Ввод текста:
    input = driver.find_element('name', 'q')
    input.send_keys('Selenium Python')
  • Клик мышкой:
    button = driver.find_element('xpath', '//button')
    button.click()
  • Получить текст:
    element.text
  • Скриншот:
    driver.save_screenshot('screen.png')
  • Ждать элемент (очень важно для SPA!):
    
    from selenium.webdriver.common.by import By
    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, "myid"))
    )
        
  • Закрыть браузер:
    driver.quit()

Есть ещё куча всего: работа с cookies, переключение между окнами/фреймами, выполнение JS, headless-режим. Документация: https://selenium-python.readthedocs.io/

Ошибки и как делать не надо

  • Не ставь WebDriver «на глазок», всегда смотри версию браузера! Иначе «SessionNotCreatedException».
  • Не используй time.sleep() для ожидания загрузки элементов. Используй WebDriverWait — это реально спасает от рандомных фейлов.
  • Не хардкоди пути к WebDriver — лучше добавь его в PATH или используй webdriver-manager (https://github.com/SergeyPirogov/webdriver_manager).
  • Не забывай закрывать браузер (driver.quit()), иначе будет зоопарк из зомби-процессов.
  • Не храни пароли в коде — используй переменные окружения или секреты.

Пример реального использования в окружении

Допустим, надо автоматом логиниться в админку, проверять статус заказа и делать скриншот. Вот пример:


from selenium import webdriver
from selenium.webdriver.common.by import By
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC

driver = webdriver.Chrome()
driver.get('https://myshop.local/admin')

driver.find_element('name', 'username').send_keys('admin')
driver.find_element('name', 'password').send_keys('supersecret')
driver.find_element('css selector', 'button[type="submit"]').click()

# Ждем, пока появится элемент "Статус заказа"
status = WebDriverWait(driver, 10).until(
    EC.visibility_of_element_located((By.XPATH, '//span[@id="order_status"]'))
)
print('Статус заказа:', status.text)

driver.save_screenshot('order_status.png')
driver.quit()

В реальных проектах всё это можно обернуть в pytest-фреймворк, запускать в CI (например, GitHub Actions, GitLab CI, Jenkins). Для headless-режима добавь опции:


from selenium.webdriver.chrome.options import Options
options = Options()
options.add_argument('--headless')
driver = webdriver.Chrome(options=options)

Заключение

Selenium — это не просто костыль для парсинга, а полноценный инструмент для автоматизации браузера и тестирования UI. Если всё делать с умом (а не через time.sleep и copy-paste из stackoverflow), то получится мощная и надежная штука, которая экономит часы работы и нервы. Документация — твой друг: https://selenium-python.readthedocs.io/. Если что-то не работает — смотри логи, гугли ошибки, и не забывай обновлять WebDriver!

P.S. Если нужна интеграция с CI, смотри GitHub Actions или GitLab CI примеры.

Хотите прочитать больше про Разное?
Отзывов нет.

Ваш отзыв

Пожалуйста, заполните поля снизу и добавьте отзыв!.
Имя *
E-mail *
Сайт
Сообщение *