Поддерживаемые языки
Playwright доступен для четырёх языков программирования. Все версии имеют единое ядро и одинаковые возможности, различия — только в синтаксисе и экосистеме.
Обзор языков
Playwright поддерживает 4 языка программирования: Python, JavaScript / TypeScript, Java и .NET (C#). API идентичен во всех реализациях — если вы знаете один язык, вы легко перейдёте на другой.
Общее ядро: Все версии Playwright имеют одинаковые возможности — поддержка браузеров (Chromium, Firefox, WebKit), API-тестирование, сетевой перехват, трассировка, видео, скриншоты, эмуляция устройств, генерация кода через codegen и многое другое.
Python
Основной язык этого справочника. Playwright для Python поддерживает синхронный и асинхронный API. Тесты пишутся с помощью плагина pytest-playwright, который предоставляет фикстуры page, context, browser.
import asyncio from playwright.async_api import async_playwright async def main(): async with async_playwright() as p: browser = await p.chromium.launch() page = await browser.new_page() await page.goto("https://example.com") print(await page.title()) await browser.close() asyncio.run(main())
Совет: Для повседневного использования рекомендуется pytest-плагин с синхронным API — он проще и читается естественнее. Асинхронный API пригодится, если вы работаете с asyncio-кодом.
JavaScript / TypeScript
Родной язык Playwright. Имеет собственный тест-раннер @playwright/test с конфигурацией playwright.config.ts, встроенным параллельным запуском, отчётами и ретраями. Полностью асинхронный API.
const { chromium } = require('playwright'); (async () => { const browser = await chromium.launch(); const page = await browser.newPage(); await page.goto('https://example.com'); console.log(await page.title()); await browser.close(); })();
TypeScript: TypeScript имеет статическую типизацию, что даёт лучшую поддержку IDE (автодополнение, проверка типов на лету). Все примеры в официальной документации Playwright даются на TypeScript.
Java
Playwright для Java интегрируется с JUnit 5 и TestNG. Поддерживает Page Object Model через аннотации и стандартные Java-паттерны. Доступен синхронный и асинхронный API.
import com.microsoft.playwright.*; public class Example { public static void main(String[] args) { try (Playwright playwright = Playwright.create()) { Browser browser = playwright.chromium().launch(); Page page = browser.newPage(); page.goto("https://example.com"); System.out.println(page.title()); browser.close(); } } }
.NET (C#)
Playwright для .NET поддерживает MSTest, NUnit и xUnit. Полностью асинхронный API на базе async/await. Установка через NuGet-пакет Microsoft.Playwright.
using Microsoft.Playwright; await using var playwright = await Playwright.CreateAsync(); await using var browser = await playwright.Chromium.LaunchAsync(); var page = await browser.NewPageAsync(); await page.GotoAsync("https://example.com"); Console.WriteLine(await page.TitleAsync());
Различия между языками
Несмотря на единое ядро, между реализациями есть различия:
| Аспект | Python | JavaScript/TS | Java | .NET |
|---|---|---|---|---|
| Синтаксис | Синхронный + async/await | Только async/await | Синхронный + async | Только async/await |
| Типизация | Динамическая (опционально type hints) | TypeScript — статическая | Статическая | Статическая |
| Тестовый раннер | pytest + pytest-playwright | @playwright/test (встроенный) | JUnit 5, TestNG | MSTest, NUnit, xUnit |
| Page Object | Через классы Python | Через классы/функции | Аннотации + классы | Классы C# |
| Экосистема | pytest-плагины, asyncio | npm, ESLint, Prettier | Maven, Gradle | NuGet, MSBuild |
| codegen | Генерирует Python-код | Генерирует JS/TS-код | Генерирует Java-код | Генерирует C#-код |
Общие возможности
Все языковые версии Playwright предоставляют:
- Поддержка Chromium, Firefox, WebKit
- Автоматическое ожидание (Auto-Waiting)
- Сетевой перехват и мокирование (route)
- API-тестирование (APIRequestContext)
- Трассировка (Trace Viewer) с записью и просмотром
- Запись видео прохождения тестов
- Скриншоты (страницы, элементов, полностраничные)
- ARIA-снимки для snapshot-тестирования
- Эмуляция устройств, геолокации, часового пояса
- Clock API для контроля времени
- WebSocket-маршрутизация
- Генерация кода через
playwright codegen - Докер-образы и CI-интеграция
Выбор языка: Если вы работаете в Python-экосистеме — используйте Python. Для Node.js-проектов выбирайте JavaScript/TypeScript. Java и .NET — отличный выбор для корпоративных проектов на соответствующих стеках.
Когда какой язык выбрать
- Python — data-science, ML, Django, FastAPI, автоматизация ETL-процессов. Простой синтаксис, огромное сообщество.
- JavaScript / TypeScript — фронтенд-проекты, Next.js, React, Vue, Angular. Нативный тест-раннер, лучшая интеграция с фронтенд-инструментами.
- Java — корпоративные приложения, Spring Boot, Android-совместимость. Статическая типизация, зрелая экосистема.
- .NET — Windows-экосистема, ASP.NET, Azure. Полная интеграция с Visual Studio и Azure DevOps.
Важно: Независимо от выбранного языка, возможности Playwright идентичны. Команда Microsoft поддерживает все четыре версии синхронно — новые функции появляются одновременно во всех языках.