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

Обзор языков

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());

Различия между языками

Несмотря на единое ядро, между реализациями есть различия:

АспектPythonJavaScript/TSJava.NET
СинтаксисСинхронный + async/awaitТолько async/awaitСинхронный + asyncТолько async/await
ТипизацияДинамическая (опционально type hints)TypeScript — статическаяСтатическаяСтатическая
Тестовый раннерpytest + pytest-playwright@playwright/test (встроенный)JUnit 5, TestNGMSTest, NUnit, xUnit
Page ObjectЧерез классы PythonЧерез классы/функцииАннотации + классыКлассы C#
Экосистемаpytest-плагины, asyncionpm, ESLint, PrettierMaven, GradleNuGet, 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 поддерживает все четыре версии синхронно — новые функции появляются одновременно во всех языках.