Selenium
Selenium — это набор программных инструментов с открытым исходным кодом, предназначенных для автоматизации действий веб-браузера. Основная область применения Selenium — тестирование веб-приложений (end-to-end тестирование), однако он также используется для автоматического сбора данных с веб-страниц (парсинга), мониторинга сайтов и выполнения повторяющихся операций в браузере. Проект поддерживается и развивается сообществом при спонсорской поддержке компании Linux Foundation.
История
Разработка Selenium началась в 2004 году в компании ThoughtWorks, когда инженер Джейсон Хаггинс (Jason Huggins) создал внутреннюю программу для тестирования веб-приложения на JavaScript. Этот инструмент, получивший название JavaScriptTestRunner, позволял запускать тесты в браузере, имитируя действия пользователя. Вскоре проект был переименован в Selenium (по иронии судьбы — из-за того, что другой продукт, конкурент от компании Mercury Interactive, назывался QuickTest Professional, и название «Selenium» (химический элемент, способный подавлять действие ртути (mercury)) было выбрано как метафора).
В 2005 году разработчик Саймон Стюарт (Simon Stewart) из компании Google создал проект WebDriver, который, в отличие от Selenium Core, управлял браузером не через JavaScript, а напрямую, через нативные интерфейсы операционной системы. В 2009 году проекты Selenium и WebDriver объединились, образовав Selenium 2.0. В 2018 году вышла версия Selenium 4.0, которая включала поддержку протокола W3C WebDriver, ставшего международным стандартом (W3C Recommendation).
Архитектура и компоненты
Selenium состоит из нескольких ключевых компонентов, которые могут использоваться как совместно, так и по отдельности.
Selenium WebDriver
Центральный компонент, обеспечивающий программное управление браузером. WebDriver принимает команды от тестового кода (обычно написанного на одном из поддерживаемых языков программирования) и передаёт их браузеру через его нативный API или через драйвер-посредник. Каждый браузер (Google Chrome, Mozilla Firefox, Microsoft Edge, Safari) требует установки отдельного драйвера, реализующего протокол WebDriver (например, ChromeDriver для Chrome, GeckoDriver для Firefox).
WebDriver поддерживает следующие операции:
- открытие и закрытие вкладок и окон;
- навигация по URL;
- поиск элементов на странице (по ID, классу, CSS-селектору, XPath);
- клики, ввод текста, нажатие клавиш;
- извлечение атрибутов и текста элементов;
- управление куками, localStorage;
- выполнение произвольного JavaScript-кода.
Языки программирования, для которых существуют официальные биндинги (клиентские библиотеки) Selenium WebDriver: Java, C#, Python, JavaScript (Node.js), Ruby, Kotlin.
Selenium IDE (Integrated Development Environment)
Расширение для браузера (доступно для Chrome и Firefox), которое позволяет записывать действия пользователя в браузере и воспроизводить их. Selenium IDE предназначена для быстрого создания прототипов тестов, обучения и отладки. Она генерирует код на нескольких языках (например, Python или Java), который затем можно адаптировать для полноценной тестовой среды. Возможности Selenium IDE ограничены по сравнению с кодом, написанным с WebDriver.
Selenium Grid
Инструмент для параллельного запуска тестов на нескольких машинах и/или в разных браузерах и операционных системах. Selenium Grid состоит из хаба (hub), который координирует тесты, и нескольких узлов (nodes), на которых запущены браузеры. Тестовый код отправляет команды на хаб, а тот распределяет их по свободным узлам. Это позволяет значительно ускорить выполнение набора тестов и проверить совместимость с разными средами.
Классификация тестов с Selenium
В сфере тестирования веб-приложений Selenium относят к инструментам для:
- функционального тестирования — проверка, что приложение работает согласно требованиям;
- регрессионного тестирования — проверка, что новые изменения не сломали существующую функциональность;
- приёмочного тестирования — имитация действий конечного пользователя.
Selenium не предназначен для нагрузочного тестирования; для этих целей существуют специализированные решения (например, JMeter, Gatling).
Преимущества и недостатки
Преимущества
- Кроссплатформенность и кросбраузерность: один и тот же тестовый сценарий может быть запущен в разных браузерах и на разных ОС;
- Открытый исходный код и бесплатность, что устраняет лицензионные затраты;
- Гибкость и расширяемость: благодаря поддержке нескольких языков программирования и возможности интеграции с фреймворками (JUnit, TestNG, pytest, NUnit);
- Активное сообщество и обширная документация.
Недостатки
- Сложность настройки: требуется установка драйверов для каждого браузера и обеспечение совместимости версий;
- Отсутствие встроенной системы отчётов — необходимо использовать сторонние библиотеки или интегрировать с CI/CD-системами;
- Чувствительность к атрибутам элементов: если разработчики меняют идентификаторы или структуру HTML, тесты могут ломаться;
- Нет прямой поддержки мобильных приложений (для мобильных браузеров используется через Appium, который основан на WebDriver);
- Низкая скорость выполнения из-за полноценного запуска браузера (по сравнению с API-тестами).
Применение в России и правовые аспекты
Selenium широко применяется в российских IT-компаниях, занимающихся разработкой веб-сервисов, банковских приложений, интернет-магазинов. Использование Selenium как открытого программного обеспечения не требует лицензирования и не подпадает под ограничения, связанные с импортозамещением, поскольку его можно использовать на любых ОС, включая российские дистрибутивы Linux.
При использовании Selenium для автоматического сбора данных (парсинга) необходимо учитывать требования российского законодательства, в частности:
- Федеральный закон «Об информации, информационных технологиях и о защите информации» № 149-ФЗ;
- Гражданский кодекс РФ (часть 4) — охрана авторских прав на контент;
- Закон «О персональных данных» № 152-ФЗ — если собираемые данные позволяют идентифицировать физическое лицо.
Автоматический сбор данных без разрешения владельца сайта может быть признан незаконным, особенно если он приводит к нарушению работы сайта или доступа к нему третьих лиц, а также к утечке персональных данных.
Сравнение с другими инструментами
Помимо Selenium, существуют другие популярные инструменты для автоматизации тестирования веб-приложений:
| Инструмент | Языки программирования | Принцип работы | Поддержка браузеров |
|---|---|---|---|
| Puppeteer | JavaScript, TypeScript | Управляет Chrome/Chromium через DevTools Protocol | Только Chrome/Chromium и Edge (частично) |
| Playwright | JavaScript, Python, Java, .NET | Использует протокол DevTools и собственные драйверы | Chrome, Firefox, Safari (WebKit) |
| Cypress | JavaScript | Работает в том же процессе, что и браузер (Node.js) | Только Chrome, Firefox (ограниченно), Edge |
| Selenium | Java, C#, Python, JS, Ruby, Kotlin | Через WebDriver (W3C-протокол) | Практически все браузеры |
Selenium остаётся наиболее универсальным решением, особенно при необходимости тестирования в различных браузерах (включая устаревшие версии) или при работе с большим количеством сред.
Источники
- Официальная документация проекта Selenium (selenium.dev).
- Huggins, J. (2004). Selenium Open Source Project.
- Stewart, S. (2005). WebDriver: An Overview.
- W3C WebDriver Specification (w3.org/TR/webdriver/).
- Федеральный закон от 27.07.2006 № 152-ФЗ «О персональных данных».
- Федеральный закон от 27.07.2006 № 149-ФЗ «Об информации, информационных технологиях и о защите информации».
- Гражданский кодекс Российской Федерации (часть четвертая) от 18.12.2006 № 230-ФЗ.
BFOmetr — база данных и аналитика по компаниям России.
На главную BFOmetr →