📖 Теория: конспект Selenium WebDriver (Урок 03)

🎯 Итоговое повторение

⚡ Краткий конспект

  • Selenium — набор инструментов: IDE (запись/воспроизведение), WebDriver (API управления браузером), Grid (параллельный запуск).
  • WebDriver — управляет браузером через драйвер на уровне ОС: Chrome → ChromeDriver, Firefox → GeckoDriver.
  • Selenium 4: driver = webdriver.Chrome() — Selenium Manager сам управляет драйвером.
  • Навигация: get(url), back(), forward(), refresh()
  • Окно: maximize_window(), set_window_size(w, h), save_screenshot("file.png")
  • Фикстура pytest: @pytest.fixture + yield driver → автозакрытие браузера.
  • Закрыть браузер: всегда driver.quit(), не close().

Что такое Selenium

Selenium — набор инструментов для автоматизации тестирования веб-приложений. Управляет браузером программно, имитируя действия пользователя.

Три компонента Selenium

КомпонентНазначение
Selenium IDE Запись и воспроизведение тестов в браузере. Подходит для начального уровня, не требует написания кода.
Selenium WebDriver Мощный API для взаимодействия с браузерами через код. Поддерживает Chrome, Firefox, Safari, Edge и другие.
Selenium Grid Параллельный запуск тестов на нескольких машинах и браузерах одновременно.

Как работает WebDriver

WebDriver — компонент Selenium, взаимодействующий с браузером на уровне ОС.

  1. Вы пишете тестовый скрипт на одном из поддерживаемых языков (Python, Java, C#, JavaScript и др.).
  2. WebDriver передаёт команды браузеру через драйвер, специфичный для браузера (например, ChromeDriver для Chrome).
  3. Браузер выполняет команды и возвращает результаты через WebDriver.

Основные характеристики WebDriver

  • Мультибраузерность — Chrome, Firefox, Safari, Edge.
  • Поддержка языков — Python, Java, C#, Ruby, JavaScript.
  • Поддержка мобильных платформ — тесты в мобильных браузерах.
  • Гибкость — сложные сценарии взаимодействия с UI.
  • Параллельное выполнение — через Selenium Grid.

Основные драйверы

ДрайверБраузер
ChromeDriverGoogle Chrome
GeckoDriverMozilla Firefox
SafariDriverApple Safari (встроен в macOS)
EdgeDriverMicrosoft Edge

Преимущества и недостатки Selenium

Преимущества

  • Кроссбраузерность — самые популярные браузеры.
  • Поддержка множества языков программирования.
  • Совместимость с Windows, macOS, Linux.
  • Бесплатный, с открытым исходным кодом.
  • Интеграция с CI/CD (Jenkins, GitHub Actions и др.).
  • Масштабируемость через Selenium Grid.
  • Огромное сообщество и экосистема.

Недостатки

  • Не подходит для тестирования производительности.
  • Трудности с динамически загружаемыми элементами — нужны явные ожидания.
  • Высокая зависимость от структуры DOM — изменение HTML ломает тесты.
  • Ограниченные возможности работы с системными окнами и диалогами ОС.
  • Требует знания программирования.

Установка Selenium

В Selenium 4 встроен Selenium Manager — он автоматически находит и загружает нужный драйвер. Ручная загрузка ChromeDriver больше не нужна.

# Установка Selenium
pip install selenium

# Дополнительно: webdriver-manager (для явного управления, если нужно)
pip install webdriver-manager

Запуск браузера (Selenium 4 — рекомендуемый способ)

# subjects/auto-qa/examples/lesson04/basic_launch.py
from selenium import webdriver

driver = webdriver.Chrome()  # Selenium Manager управляет драйвером автоматически
driver.get("https://itcareerhub.de/ru")
driver.quit()

Метод get — переход на URL

driver.get("https://itcareerhub.de/ru/")
driver.get("https://www.berlin.de")  # Переходит на новую страницу

История браузера

При каждом запуске WebDriver открывает чистый браузер — без истории, авторизации, cookies.

driver.back()      # Вернуться на предыдущую страницу
driver.forward()   # Перейти вперёд по истории
driver.refresh()   # Обновить текущую страницу

Управление окном

driver.maximize_window()          # Развернуть на весь экран
driver.fullscreen_window()        # Полноэкранный режим
driver.minimize_window()          # Свернуть окно
driver.set_window_size(640, 460)  # Установить размер вручную (px)

Скриншоты

Скриншот — снимок текущего состояния браузера. Используется для фиксации ошибок и визуальных проверок.

driver.save_screenshot("./screenshot.png")         # В текущую папку
driver.save_screenshot("./screenshots/page.png")   # В подпапку
Форматы: поддерживаются .png и .jpeg. Рекомендуется .png для лучшего качества.

Метод click() и поиск элементов

click() — имитирует нажатие на элемент страницы (кнопку, ссылку и т.д.).

from selenium.webdriver.common.by import By

# Найти элемент и кликнуть
element = driver.find_element(By.LINK_TEXT, "О нас")
element.click()

Фикстура pytest для WebDriver

Выносить инициализацию и закрытие браузера в фикстуру — стандартная практика при использовании pytest с Selenium. Это устраняет дублирование и гарантирует закрытие браузера даже при ошибке в тесте.

# subjects/auto-qa/examples/lesson04/conftest.py
import pytest
from selenium import webdriver

@pytest.fixture
def driver():
    driver = webdriver.Chrome()
    driver.maximize_window()
    yield driver          # Передаём драйвер в тест
    driver.quit()         # Выполняется после теста в любом случае

Использование фикстуры в тестах

# subjects/auto-qa/examples/lesson04/test_navigation.py
import pytest
from selenium.webdriver.common.by import By

def test_open_google(driver):
    driver.get("https://www.google.com")
    assert "Google" in driver.title

def test_open_example(driver):
    driver.get("https://www.example.com")
    heading = driver.find_element(By.TAG_NAME, "h1").text
    assert heading == "Example Domain"
yield vs return: yield driver возвращает управление тесту. Код после yield — это teardown (очистка), который выполняется после завершения теста.