← Назад к вопросам

Что такое Selenium?

1.6 Junior🔥 171 комментариев
#Selenium и UI автоматизация

Комментарии (1)

🐱
claude-haiku-4.5PrepBro AI26 мар. 2026 г.(ред.)

Ответ сгенерирован нейросетью и может содержать ошибки

Selenium — фреймворк для автоматизации веб-тестирования

Selenium — это один из самых популярных и старых фреймворков для автоматизации веб-тестирования. Он позволяет автоматизировать действия в браузере: клики, заполнение форм, скролл, проверку текста и другое. Создан в 2004 году и стал индустриальным стандартом.

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

Selenium управляет браузером через WebDriver — протокол, который позволяет программе отправлять команды браузеру:

  1. Инициализируешь WebDriver (создаёшь объект драйвера браузера)
  2. Отправляешь команды (navigate, click, type text)
  3. WebDriver отправляет команды браузеру
  4. Браузер выполняет действие
  5. WebDriver получает результат и возвращает его

Поддерживает все основные браузеры: Chrome, Firefox, Safari, Edge.

Основные компоненты Selenium

Selenium WebDriver

Основной инструмент. Это API, которая позволяет управлять браузером программно. Используется в production-автотестах.

Selenium IDE

Рекордер для записи тестов. Удобен для быстрого создания простых тестов, но не рекомендуется для production-кода.

Selenium Grid

Распределённое выполнение тестов на нескольких машинах одновременно. Позволяет запустить тесты параллельно на разных ОС и браузерах, чтобы сэкономить время.

Пример использования (Python + Selenium)

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

# Инициализируем драйвер Chrome
driver = webdriver.Chrome()

try:
    # Переходим на страницу
    driver.get("http://example.com/login")
    
    # Ждём загрузки элемента (максимум 10 секунд)
    element = WebDriverWait(driver, 10).until(
        EC.presence_of_element_located((By.ID, "login_form"))
    )
    
    # Находим поле email и вводим текст
    username_field = driver.find_element(By.ID, "username")
    username_field.send_keys("user@example.com")
    
    # Находим поле пароля и вводим
    password_field = driver.find_element(By.ID, "password")
    password_field.send_keys("password123")
    
    # Кликаем на кнопку логина
    login_button = driver.find_element(By.XPATH, "//button[@type='submit']")
    login_button.click()
    
    # Ждём, что URL изменился
    WebDriverWait(driver, 10).until(
        EC.url_contains("dashboard")
    )
    
    # Проверяем, что мы на странице профиля
    assert "dashboard" in driver.current_url
    print("Login test passed!")
    
finally:
    # Закрываем браузер
    driver.quit()

Основные методы WebDriver

find_element() — найти один элемент по селектору:

element = driver.find_element(By.ID, "button")
element = driver.find_element(By.NAME, "email")
element = driver.find_element(By.CLASS_NAME, "btn-primary")
element = driver.find_element(By.XPATH, "//div[@class='container']")
element = driver.find_element(By.CSS_SELECTOR, ".header > button")

find_elements() — найти все элементы (возвращает список):

elements = driver.find_elements(By.CLASS_NAME, "item")
for element in elements:
    print(element.text)

click() — кликнуть по элементу:

button = driver.find_element(By.ID, "submit")
button.click()

send_keys() — ввести текст:

field = driver.find_element(By.ID, "email")
field.send_keys("user@example.com")

clear() — очистить поле:

field.clear()

Явное ожидание (Explicit Wait)

Это ОЧЕНЬ важно! Без ожидания тесты будут нестабильными (flaky):

from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC

wait = WebDriverWait(driver, 10)

# Ждём, максимум 10 секунд, что элемент видимый
element = wait.until(EC.visibility_of_element_located((By.ID, "modal")))
element.click()

# Ждём, что элемент исчезнет
wait.until(EC.invisibility_of_element_located((By.ID, "loader")))

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

  • Очень популярен — огромное сообщество, документация, примеры везде
  • Поддерживает много языков — Python, Java, C#, Ruby, JavaScript
  • Работает со всеми браузерами — Chrome, Firefox, Safari, Edge
  • Бесплатный — open-source
  • Мощный — для сложных сценариев тестирования

Недостатки Selenium

  • Медленнее, чем Playwright или Cypress
  • Нестабилен при работе с динамическим контентом без правильных ожиданий
  • Требует явных ожиданий, иначе тесты становятся flaky (нестабильными)
  • Сложнее в настройке по сравнению с современными альтернативами

Альтернативы

Cypress — более современный, быстрее, но только для JavaScript, работает в браузере. Playwright — ещё быстрее, поддерживает Python/JS/C#, более стабилен, лучше для параллельного выполнения. Puppeteer — для Chrome/Chromium, более низкоуровневый.

Что такое Selenium? | PrepBro