Wiki · Технологии разработки
Selenium
Selenium – это открытый проект для автоматизации браузера: программа открывает Chrome, Firefox, Edge или Safari, кликает по кнопкам, вводит текст и проверяет, что получилось. Чаще всего на нём пишут автотесты сайтов и веб-приложений.
Если подрядчик говорит «у нас на проекте автотесты на Selenium», это значит примерно следующее. Есть набор сценариев: открыть каталог, добавить товар в корзину, оформить заказ, войти в личный кабинет. После каждого обновления скрипты прогоняют эти сценарии в настоящем браузере и сообщают, где что сломалось. Человеку не нужно вручную проходить корзину в двадцатый раз.
Не путайте с одноимённым витамином и отелями: в Wordstat запрос «selenium» наполовину про них.
Откуда взялся Selenium и что такое WebDriver
Проект начал Джейсон Хаггинс в 2004 году в компании ThoughtWorks: ему нужно было тестировать внутреннее приложение для учёта рабочего времени. Позже Саймон Стюарт сделал WebDriver, инструмент с отдельным драйвером под каждый браузер, и проекты объединились. Selenium 4 вышел в октябре 2021 года.
WebDriver со временем стал стандартом W3C: в 2018 году консорциум утвердил его как рекомендацию. Это общий протокол, по которому внешняя программа управляет браузером. Поэтому один и тот же тест работает в разных браузерах, а сами производители браузеров поддерживают свои драйверы.
Сейчас в проекте Selenium несколько частей:
- WebDriver: библиотеки для Java, Python, C#, Ruby и JavaScript, на которых пишут сценарии;
- Grid: запуск тестов параллельно на нескольких машинах и в разных браузерах;
- IDE: расширение для браузера, которое записывает действия человека и проигрывает их снова;
- Selenium Manager: сам скачивает нужный драйвер и браузер, раньше это делали вручную.

Так выглядит шаг теста на Python: открыть страницу, найти поле поиска и ввести запрос.
driver = webdriver.Chrome()
driver.get('https://example.com/catalog/')
driver.find_element(By.NAME, "q").send_keys('смеситель')
Какие проверки сайта отдают Selenium, а какие нет
Автотесты окупаются на сценариях, которые приносят деньги и ломаются незаметно: оформление заказа, оплата, регистрация, формы заявок, фильтры каталога. Если после обновления 1С-Битрикс перестала отправляться форма, автотест скажет об этом в тот же день, а не через неделю, когда упадут заявки.
- Регрессия: после каждой доработки проверить, что старое не сломалось.
- Одинаковые сценарии в Chrome, Firefox, Safari и Edge.
- Длинные формы и личные кабинеты, которые скучно проходить руками.
- Удобство и внешний вид: робот не скажет, что кнопку трудно найти. Это задача юзабилити-тестирования.
- Нагрузка: сотни браузеров на Selenium не заменят нагрузочное тестирование, для него есть свои инструменты.
Слабое место Selenium в хрупкости. Тест ищет кнопку по адресу в вёрстке, верстальщик переименовал класс, и тест падает, хотя сайт работает. Хорошие тесты опираются на устойчивые атрибуты и явные ожидания, а не на паузы «подождать 5 секунд». Как автотесты встраиваются в общую проверку перед запуском, описано в статье Тестирование сайта.
Selenium или Playwright: что выбрать под задачу
Главный соперник Selenium сейчас Playwright от Microsoft. Он моложе, сам ждёт появления элементов на странице и работает с движками Chromium, Firefox и WebKit.
| Ситуация | Selenium | Playwright |
|---|---|---|
| В компании уже есть тесты и команда на Java или C# | подходит, переписывать не нужно | есть Java и .NET, но тесты придётся переносить |
| Нужен настоящий Safari или старые браузеры | работает с официальными драйверами браузеров | использует свои сборки движков, WebKit вместо Safari |
| Новый проект на JavaScript или TypeScript | подходит | обычно быстрее в настройке, меньше ручных ожиданий |
| Запуск на десятках машин | Grid | параллельный запуск встроен в тест-раннер |
Для заказчика важнее другое: тесты должны лежать в репозитории проекта, запускаться одной командой и передаваться вместе с кодом. Тогда новая команда их подхватит, на каком бы инструменте они ни были написаны.
Selenium, парсинг и защита сайта от ботов
Раз Selenium управляет настоящим браузером, его используют и для сбора данных со страниц, которые подгружают цены и остатки скриптами. Про сам сбор данных и его правовые рамки читайте в статье Парсинг.
Со стороны владельца сайта такой бот выглядит как обычный посетитель, но есть отличия. Стандарт WebDriver прямо предусматривает свойство navigator.webdriver: браузер под удалённым управлением сообщает странице, что им управляет программа. Добросовестные инструменты этот флаг не скрывают. Другие признаки ботов видны в логах сервера: слишком ровный темп запросов, обход сотен карточек подряд, много сессий с одного адреса.

Защита строится слоями: ограничение частоты запросов на сервере, фильтр трафика у хостинга или CDN, капча на формах. Перекрывать всё подряд не стоит: если ограничения задевают роботов Яндекса и Google, страдает индексация. Поэтому правила настраивают по логам и проверяют, что поисковые роботы проходят.
Автотесты на Selenium, WebDriver и боты на сайте
Чем Selenium отличается от WebDriver?
WebDriver – это стандарт W3C и протокол, по которому программа управляет браузером, а Selenium – проект, который этот протокол использует и добавляет к нему библиотеки для языков программирования, Grid и IDE. Selenium WebDriver называют часть проекта, на которой пишут тесты.
На каком языке пишут тесты Selenium?
Тесты Selenium пишут на Java, Python, C#, Ruby или JavaScript. Обычно берут язык команды, которая будет их поддерживать.
Почему автотесты на Selenium падают, хотя сайт работает?
Чаще всего тест ищет элемент по классу или пути в вёрстке, а их поменяли. Вторая причина в ожиданиях: скрипт кликает раньше, чем кнопка появилась. Лечится устойчивыми атрибутами для тестов и явным ожиданием нужного состояния страницы.
Как сайт понимает, что им управляет Selenium?
Браузер под управлением WebDriver выставляет свойство navigator.webdriver, и скрипт на странице может его прочитать. Ещё ботов выдают ритм запросов, однотипные маршруты по сайту и много сессий с одного IP-адреса в логах.
Где запускают автотесты Selenium после каждого обновления сайта?
Обычно на сервере сборки: после каждого изменения кода система CI поднимает браузеры, прогоняет сценарии и присылает отчёт. Для параллельного запуска в разных браузерах используют Selenium Grid или облачные фермы браузеров.
Когда автотесты для сайта не окупаются?
Для небольшого сайта-визитки, который меняют пару раз в год, ручная проверка обходится дешевле, чем написание и поддержка тестов. Автотесты оправданы там, где часто выходят доработки и есть сценарии с деньгами: корзина, оплата, заявки, личный кабинет. Начинать лучше с трёх-пяти главных сценариев: каждый тест потом придётся обновлять вместе с вёрсткой, а широкое покрытие быстро становится отдельной статьёй расходов.
Если у вас уже есть сайт с автотестами или без них, берём его на техническую поддержку: проверяем главные сценарии после обновлений. Настройка защиты от ботов и ограничений по логам входит в услугу информационной безопасности сайтов.
Источники
- Документация Selenium: разделы WebDriver, Grid, IDE, Selenium Manager
- Selenium: история проекта и анонс Selenium 4
- W3C WebDriver: спецификация и сообщение о статусе рекомендации
- Документация Playwright
Остались вопросы по теме «Selenium»?
Напишите нам в Telegram или MAX. Ответит специалист, который отвечает за эту тему, или руководитель проектов в рабочее время.
Отвечает по темеСергей ЧерняковWeb-разработчикНад статьёй работали
Услуги
Услуги по теме
Посчитайте стоимость проекта за 2 минуты
Калькулятор соберёт смету по нашим тарифам: сайт, дизайн, интеграции и поддержка.
