Браузеры
Запуск, настройка и управление браузерами в 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()