Что такое Selenium и для чего он нужен
Selenium — это инструмент автоматизации тестирования веб-приложений с открытым исходным кодом. Продукт позволяет воспроизводить действия пользователей: регистрацию, клики на кнопки, поиск и переходы по страницам, заполнение форм и так далее. С помощью Selenium можно проверять работу приложения в разных браузерах и операционных системах, выполнять функциональное и регрессионное (проверка корректности работы после внесения изменений в код) тестирование, а также тестирование производительности (например, измерение времени загрузки страницы). Благодаря поддержке интеграции с другими инструментами и несколькими языками программирования, продукт пользуется популярностью у тестировщиков.
Основные компоненты Selenium: IDE, WebDriver, Grid, RC, Server
- Selenium IDE — это плагин (расширение) для браузеров Google Chrome, Microsoft Edge и Mozilla Firefox, который записывает действия пользователя и генерирует код для WebDriver (RC). Сгенерированные тесты можно сохранять, чтобы использовать повторно самостоятельно или внутри других тестов, и изменять: добавлять условия или проверки, а также экспортировать. Инструмент имеет простой интерфейс, подходит для создания и простых, и сложных сценариев.
- Selenium WebDriver — это библиотека для локального и удаленного управления браузерами, ключевой компонент проекта. WebDriver содержит набор драйверов для браузеров и библиотеки на нескольких языках программирования: Java, Python, C#, Ruby и других. Компонент выполняет тестовые сценарии, воспроизводя действия пользователей, например поиск на сайте и заполнение форм.
- Selenium RC — это инструмент, который использовался вместо WebDriver до его появления. Сейчас компонент доступен, но практически не используется в связи с устаревшей функциональностью и отсутствием обновлений.
- Selenium Server — это сервер для удаленного управления браузерами.
- Selenium Grid — это комплекс Selenium-серверов, позволяющий запускать тесты параллельно на множестве компьютеров в разных браузерах. Так можно ускорить тестирование продукта. Кроме того, поддерживается кроссплатформенность: тесты могут запускаться в разных операционных системах (ОС). Grid состоит из нескольких компонентов: хаба — выделенного сервера, управляющего распределением тестов, и нод — других серверов, выполняющих тестирование в определенных условиях. Среди условий могут быть браузер и его версия, ОС, тип архитектуры процессора и т. д. После запроса клиента хаб выбирает подходящую ноду, направляет запрос на нее, после чего выполняется тест.
Принцип работы Selenium
Работу инструмента можно разделить на следующие шаги:
- Тестировщик на одном из доступных языков программирования описывает тестовый сценарий.
- WebDriver запускает браузер с помощью соответствующего драйвера, открывает страницу и выполняет описанный сценарий.
- Selenium выводит результаты.
Пример использования Selenium в тестировании
Рассмотрим пример проверки авторизации и регистрации на сайте на языке Python:
from selenium import webdriver
from selenium.webdriver.common.by import By
from selenium.webdriver.common.keys import Keys
import time
# Инициализация WebDriver
driver = webdriver.Chrome()
try:
# Открытие сайта
driver.get("https://example.com")
# Поиск кнопки входа и клик по ней
login_button = driver.find_element(By.ID, "login-btn")
login_button.click()
# Ввод логина и пароля
username_field = driver.find_element(By.ID, "username")
username_field.send_keys("test_user")
password_field = driver.find_element(By.ID, "password")
password_field.send_keys("secure_password")
password_field.send_keys(Keys.RETURN)
# Ожидание загрузки
time.sleep(3)
# Поиск кнопки регистрации и клик по ней
register_button = driver.find_element(By.ID, "register-btn")
register_button.click()
# Заполнение формы регистрации
driver.find_element(By.ID, "reg-username").send_keys("new_user")
driver.find_element(By.ID, "reg-email").send_keys("new_user@example.com")
driver.find_element(By.ID, "reg-password").send_keys("secure_password", Keys.RETURN)
# Проверка успешности регистрации
time.sleep(2)
welcome_message = driver.find_element(By.ID, "welcome-message")
assert "Добро пожаловать!" in welcome_message.text, "Ошибка при регистрации"
print("Тестирование выполнено успешно.")
finally:
# Закрытие браузера
driver.quit()
Преимущества и ограничения Selenium
Преимущества:
- доступность. Продукт имеет открытый исходный код и предоставляется бесплатно, поэтому его может использовать каждый программист. Сообщество активно занимается развитием проекта: улучшает документацию и функциональность, разрабатывает новые функции;
- возможности интеграции. Selenium совместим с облачными платформами, фреймворками для тестирования, системами CI/CD;
- кроссплатформенность и кроссбраузерность. Инструмент поддерживает наиболее популярные браузеры и операционные системы, благодаря чему тесты можно запускать в максимально реалистичных условиях;
- поддержка распространенных языков программирования. Продукт позволяет работать на Java, Python, C#, Ruby, JavaScript, Kotlin.
Ограничения:
- узкая сфера применения. Тестировать можно только веб-приложения — для мобильных и десктопных инструмент не подходит;
- необходимы навыки программирования. Несмотря на возможности IDE, для полноценной работы с Selenium пользователю нужно уметь программировать на достаточно высоком уровне;
- трудности в настройке параметров. Перед началом использования инструмента программисту нужно настроить среду, при этом не допустив ошибок (иначе можно столкнуться с некорректными результатами).
Итоги
Selenium — это бесплатный инструмент для тестирования веб-приложений с поддержкой нескольких языков программирования. Продукт состоит из нескольких компонентов, главный из них — это WebDriver, библиотека для управления браузерами. При достаточных навыках программирования и правильной настройке инструмента тестировщик может пользоваться всеми преимуществами Selenium: возможностями интеграции, поддержкой браузеров и другими.