От Selenium к Playwright
Updated Jul 2026
Автоматизация браузеров прошла через три отчётливые эпохи. Понимание того, как мы пришли к текущему состоянию — и почему индустрия сменила направление — помогает принимать обоснованные решения при выборе инструментов и ориентироваться в унаследованных кодовых базах, с которыми вы неизбежно столкнётесь.
Три эпохи автоматизации браузеров
Эпоха 1: Selenium (2004–2018)
Selenium определил всю область. Он представил протокол WebDriver — стандарт W3C, где тестовый код отправляет HTTP+JSON-команды процессу драйвера, который управляет браузером. Каждое взаимодействие — это HTTP-запрос и ответ.
Тестовый код --(HTTP/JSON)--> ChromeDriver --(DevTools Protocol)--> Chrome
Эта архитектура принесла кросс-браузерную, мультиязычную автоматизацию. Но также принесла врождённую латентность, нестабильные ожидания и бремя поддержки, которое плохо масштабировалось.
Эпоха 2: Инструменты прямого протокола (2017–2020)
Puppeteer (2017) доказал, что прямое подключение к Chrome DevTools Protocol через постоянный WebSocket значительно быстрее и надёжнее. Cypress (2017) пошёл другим путём — выполнение внутри самого браузера. Оба пожертвовали широтой Selenium ради скорости и удобства разработки.
Эпоха 3: Playwright (2020–настоящее время)
Playwright, созданный командой разработчиков Puppeteer, объединил лучшее из всех подходов: прямые протокольные подключения к Chromium, Firefox и WebKit с единым API, автоожиданием и встроенной тестовой инфраструктурой. Он стал выбором по умолчанию для новых проектов.
Сравнение архитектур
| Аспект | Selenium | Playwright |
|---|---|---|
| Коммуникация | HTTP-запросы к процессу драйвера | Постоянный WebSocket к браузеру |
| Ожидание | Ручное (явные/неявные ожидания) | Автоматическое, встроенное в каждое действие |
| Браузеры | Chrome, Firefox, Safari, Edge, IE | Chromium, Firefox, WebKit |
| Изоляция | Один браузер на сессию | Контексты браузера (легковесные, параллельные) |
| Языки | Java, Python, JS, C#, Ruby и др. | TypeScript/JS, Python, Java, C# |
| Скорость | Медленнее (HTTP-накладные на каждую команду) | Быстрее (одно соединение, параллельные контексты) |
| Тест-раннер | Внешний (JUnit, pytest и т.д.) | Встроенный (@playwright/test) |
| Управление сетью | Ограниченное (через прокси) | Нативный перехват и мокирование запросов |
Почему архитектура имеет значение
В Selenium простое «найти элемент и кликнуть» требует двух HTTP-запросов к драйверу. Тест со 100 взаимодействиями делает 200+ HTTP-запросов. В Playwright все команды идут через одно WebSocket-соединение с мультиплексированием — без накладных расходов на каждую команду.
// Playwright: автоожидание элемента, проверка готовности, затем клик
await page.getByRole('button', { name: 'Submit' }).click();
// Selenium — необходимы ручные ожидания
WebDriverWait(driver, 10).until(
EC.element_to_be_clickable((By.CSS_SELECTOR, "button[type='submit']"))
).click()
Сдвиг рынка
Опросы разработчиков 2024–2025 годов показывают, что Playwright обгоняет Selenium в принятии новых проектов:
- Stack Overflow 2024: Playwright — самый любимый инструмент браузерного тестирования
- State of JS 2024: Playwright имеет наивысший рейтинг удовлетворённости среди E2E-фреймворков
- npm downloads:
@playwright/testпревысилselenium-webdriverпо еженедельным загрузкам в 2024 году - Вакансии: «Playwright» встречается в новых QA-вакансиях чаще, чем «Selenium», с середины 2024 года
Selenium остаётся доминирующим в общем количестве развёрнутых кодовых баз — предприятия с годами инвестиций в Selenium не переписывают всё за одну ночь. Но направление очевидно.
Когда что использовать
| Выбирайте Playwright, когда... | Выбирайте Selenium, когда... |
|---|---|
| Начинаете новый проект | Поддерживаете существующий Selenium-набор |
| Команда использует TypeScript/Python/Java/C# | Команда использует Ruby или другие неподдерживаемые языки |
| Нужны быстрые, надёжные E2E-тесты | Нужна поддержка IE11 или устаревших браузеров |
| Хотите встроенную тестовую инфраструктуру | Организация требует Selenium |
| Нужно мокирование/перехват сети | Критично требование мультиязычности |
Честный ответ
Для большинства команд, начинающих сегодня, Playwright — правильный выбор. Он быстрее, надёжнее и имеет лучший опыт разработки. Но понимание архитектуры Selenium — протокола WebDriver, управления драйверами, жизненного цикла сессий — остаётся ценным, поскольку эти концепции переносятся на Playwright, и вы столкнётесь с Selenium в существующих проектах.
Ключевые выводы
- Selenium стал пионером автоматизации браузеров с протоколом WebDriver (HTTP+JSON-запросы)
- Playwright использует постоянные WebSocket-соединения, устраняя накладные расходы на каждую команду
- Автоожидание Playwright устраняет главный источник нестабильности тестов Selenium
- Индустрия мигрирует на Playwright для новых проектов; Selenium остаётся в унаследованных кодовых базах
- Понимание обеих архитектур делает вас более эффективным QA-инженером