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

Обзор

Playwright поддерживает три движка браузеров: Chromium, Firefox и WebKit. Каждый из них запускается через соответствующий метод объекта playwright.

Запуск браузера

Для запуска браузера используется метод launch():

from playwright.sync_api import sync_playwright

with sync_playwright() as p:
    browser = p.chromium.launch()
    # Firefox: p.firefox.launch()
    # WebKit:  p.webkit.launch()
Важно: Playwright автоматически загружает браузеры при первом запуске. Убедитесь, что выполнена команда playwright install.

Опции launch()

ПараметрОписание
headlessЗапуск в фоновом режиме (по умолчанию True). Установите False для видимого окна.
channelКанал браузера: "chrome", "msedge", "chrome-beta" и т.д.
argsСписок дополнительных аргументов командной строки.
executable_pathПуть к исполняемому файлу браузера.
downloads_pathПапка для сохранения загруженных файлов.
proxyНастройки прокси-сервера.
slow_moЗадержка (в мс) между действиями — полезна для отладки.
timeoutТайм-аут ожидания (мс).

Пример с headless = False

browser = p.chromium.launch(
    headless=False,
    slow_mo=500
)

Канал браузера (channel)

Позволяет запускать системный браузер вместо встроенного:

# Запуск системного Chrome или Edge
browser = p.chromium.launch(channel="chrome")
# или
browser = p.chromium.launch(channel="msedge")

Browser.new_context() и Browser.new_page()

После запуска браузера создаётся браузерный контекст — изолированная сессия:

context = browser.new_context(
    viewport={"width": 1920, "height": 1080},
    locale="ru-RU"
)
page = context.new_page()

Метод browser.new_page() создаёт страницу в новом контексте за один шаг:

page = browser.new_page()

Browser.version и Browser.browser_type

print(browser.version)       # "130.0.6723.58"
print(browser.browser_type)  # BrowserType: chromium

Кастомные аргументы (args)

browser = p.chromium.launch(
    args=[
        "--disable-blink-features=AutomationControlled",
        "--disable-web-security",
        "--window-size=1920,1080"
    ]
)

Подключение к существующему браузеру (CDP)

Метод connect_over_cdp() подключается к уже запущенному браузеру через протокол DevTools:

browser = p.chromium.connect_over_cdp("http://localhost:9222")
context = browser.contexts[0]    # используем существующий контекст
page = context.pages[0]

Browser.close() — закрытие браузера

Всегда закрывайте браузер после завершения работы:

browser.close()

Внутри with блока Playwright закрывает браузер автоматически.

Обработка закрытия браузера

Событие on("disconnected") срабатывает при отключении браузера:

def on_disconnected(browser):
    print("Браузер отключён")

browser.on("disconnected", on_disconnected)

Полный пример

from playwright.sync_api import sync_playwright

def run():
    with sync_playwright() as p:
        browser = p.chromium.launch(
            headless=False,
            args=["--window-size=1280,720"]
        )
        page = browser.new_page()
        page.goto("https://example.com")
        print(f"Версия: {browser.version}")
        browser.close()

run()