Playwright Python — справочник На главный сайт

Что такое Playwright

Playwright — это современный фреймворк с открытым исходным кодом для автоматизации браузеров, разработанный компанией Microsoft. Он предоставляет единый высокоуровневый API для управления Chromium, Firefox и WebKit через один интерфейс. В отличие от Selenium, Playwright не требует WebDriver — он взаимодействует с браузерами напрямую через протокол CDP (Chrome DevTools Protocol) для Chromium и собственные протоколы для Firefox и WebKit.

Ключевой факт: Playwright был создан той же командой, которая ранее работала над Puppeteer в Google. Разработка началась в 2020 году, и с тех пор фреймворк стремительно набрал популярность благодаря своей надёжности и богатому функционалу.

Поддерживаемые браузеры

Playwright поддерживает все три основных браузерных движка:

  • Chromium — основа для Google Chrome, Microsoft Edge, Opera и Brave. Использует CDP для управления.
  • Firefox — собственный протокол автоматизации, не требующий установленного браузера — Playwright использует собственные сборки.
  • WebKit — движок Safari. Playwright использует патченную версию WebKit, которая поддерживает все необходимые протоколы автоматизации.

Совет: Playwright загружает собственные сборки браузеров при выполнении команды playwright install. Это значит, что вам не нужно устанавливать браузеры отдельно — всё уже включено.

Поддерживаемые языки

Playwright доступен для четырёх языков программирования. API идентичен во всех реализациях:

  • Python — синхронный и асинхронный API (pytest-плагин в комплекте)
  • JavaScript / TypeScript — нативный API для Node.js
  • Java — Maven-зависимость с синхронным и асинхронным API
  • .NET — пакет для C# с полной поддержкой async/await

Архитектура Playwright

В отличие от Selenium, где каждый браузер требует отдельный WebDriver (chromedriver, geckodriver, safaridriver), Playwright использует встроенные протоколы:

  • Chromium — Chrome DevTools Protocol (CDP), тот же протокол, который используют инструменты разработчика Chrome.
  • Firefox — собственная реализация протокола автоматизации, основанная на патченной версии Firefox (Firefox for Automation).
  • WebKit — собственная реализация, основанная на патченной версии WebKit (WebKit for Automation).

Такой подход обеспечивает более высокую скорость работы и избавляет от проблем с версиями драйверов. Браузеры обновляются вместе с Playwright, и вы всегда получаете совместимую версию.

# Простейший пример запуска браузера через Playwright в Python
from playwright.sync_api import sync_playwright

with sync_playwright() as p:
    browser = p.chromium.launch()
    page = browser.new_page()
    page.goto("https://example.com")
    print(page.title())
    browser.close()

Ключевые возможности

Auto-Waiting (Автоматическое ожидание)

Playwright автоматически ожидает, пока элемент станет видимым, стабильным и активным, прежде чем выполнить действие. Это радикально снижает количество flaky-тестов и избавляет от ручных time.sleep(). Playwright проверяет: элемент видим, не заблокирован, не анимируется и принимает события.

Trace Viewer (Просмотрщик трассировок)

Playwright может записать полную трассировку выполнения теста — все действия, сетевые запросы, скриншоты, консольные логи и DOM-снимки. После прогона вы можете открыть трассировку в специальном GUI-инструменте и буквально «перемотать» выполнение теста назад, чтобы увидеть, что произошло в каждый момент времени.

Codegen (Генератор тестов)

Утилита playwright codegen открывает браузер и записывает все ваши действия в код на Python (или другом языке). Вы просто кликаете и вводите текст — Playwright генерирует готовый тест с правильными локаторами. Это ускоряет написание тестов в разы.

Network Interception (Перехват сети)

Playwright позволяет перехватывать, модифицировать и блокировать любые сетевые запросы на лету. Вы можете подменить ответ API, заблокировать рекламу, эмулировать офлайн-режим или проверить, какие запросы отправляет приложение.

# Перехват и подмена сетевого запроса
def handle_route(route):
    if "analytics" in route.request.url:
        route.abort()
    else:
        route.continue_()

page.route("**/*", handle_route)

Emulation (Эмуляция)

Вы можете эмулировать мобильные устройства, разные viewport'ы, геолокацию, часовой пояс, язык, цветовую схему (dark mode), сенсорные события и даже конкретные модели телефонов (iPhone, Pixel). Для этого достаточно передать параметры в browser.new_context().

Сравнение с Selenium

Playwright и Selenium — два самых популярных инструмента для автоматизации браузеров. Вот ключевые различия:

ХарактеристикаPlaywrightSelenium
АрхитектураНапрямую через протокол браузера (CDP и собственные)Через WebDriver (требуется отдельный драйвер для каждого браузера)
УстановкаОдна команда — и браузеры уже скачаныНужно скачивать WebDriver отдельно, следить за версиями
Auto-WaitingВстроенный, автоматическийТребует явных ожиданий (WebDriverWait)
СкоростьВыше за счёт прямого протоколаНиже из-за прослойки WebDriver
МультибраузерностьЕдиный API для Chromium, Firefox, WebKitРазные драйверы с разными возможностями
API для PythonСинхронный + асинхронный, pytest-интеграцияТолько синхронный через WebDriver
Сетевой перехватВстроенный (route)Требует прокси-серверов (BrowserMob и т.п.)
Мобильная эмуляцияВстроенная, с предустановленными устройствамиОграниченная, через Appium
ТрассировкаВстроенная (Trace Viewer)Только сторонние решения

Важно: Это не означает, что Selenium устарел. Selenium имеет огромное сообщество, поддержку большего количества языков и интеграцию с большим числом облачных сервисов (Sauce Labs, BrowserStack). Однако для новых проектов на Python Playwright часто является более удобным и производительным выбором.

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

  • Единый API — один и тот же код работает во всех браузерах. Вам не нужно писать разную логику для Chrome и Firefox.
  • Нет WebDriver — не нужно беспокоиться о версиях chromedriver, geckodriver и их совместимости с браузером.
  • Собственные сборки браузеров — Playwright скачивает проверенные версии браузеров, которые гарантированно работают.
  • Более быстрые тесты — за счёт прямого протокола и умных ожиданий.
  • Полный контроль над сетью — мокирование, перехват, блокировка — без дополнительных инструментов.
  • Параллельный запуск из коробки — поддержка запуска в несколько браузеров и контекстов одновременно.

Версии Playwright

Playwright для Python активно развивается. Основные версии:

  • v1.0 — первый публичный релиз (2020)
  • v1.15–1.20 — добавлены асинхронный API, APIRequestContext, улучшенные локаторы
  • v1.30–1.40 — Clock API, ARIA-снимки, улучшенный Trace Viewer
  • v1.50–1.61 — новые возможности эмуляции, улучшенная работа с сетью
  • Текущая — последняя стабильная v1.61–1.62 (июнь 2026)

Примечание: Команда Playwright выпускает новый релиз примерно раз в месяц. Следить за обновлениями можно на GitHub-репозитории или на официальном сайте.

Когда стоит использовать Playwright

Playwright отлично подходит для:

  • E2E-тестирования веб-приложений
  • Автоматизации регрессионного тестирования
  • Сбора данных (web scraping) с динамических страниц
  • Мониторинга работоспособности сайтов
  • Тестирования API в связке с браузерными тестами
  • Создания скриншотов и PDF документов
  • Записи видео прохождения тестов

Если вы пишете новый проект на Python и ищете современный, быстрый и надёжный инструмент для браузерной автоматизации — Playwright будет отличным выбором. Переходите к разделу Установка, чтобы начать работу.