Перейти к основному содержимому

Браузеры

Введение

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

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

Установка браузеров

Playwright может устанавливать поддерживаемые браузеры. Запуск команды без аргументов установит браузеры по умолчанию.

playwright install

Вы также можете установить конкретные браузеры, указав аргумент:

playwright install webkit

Посмотреть все поддерживаемые браузеры:

playwright install --help

Установка системных зависимостей

Системные зависимости могут быть установлены автоматически. Это полезно для CI-сред.

playwright install-deps

Вы также можете установить зависимости для одного браузера, передав его в качестве аргумента:

playwright install-deps chromium

Также возможно комбинировать install-deps с install, чтобы браузеры и зависимости ОС устанавливались одной командой.

playwright install --with-deps chromium

См. системные требования для официально поддерживаемых операционных систем.

Настройка браузеров

Playwright может запускать тесты в браузерах Chromium, WebKit и Firefox, а также в брендированных браузерах, таких как Google Chrome и Microsoft Edge. Он также может работать на эмулированных планшетах и мобильных устройствах. См. реестр параметров устройств для полного списка выбранных настольных, планшетных и мобильных устройств.

Запуск тестов в разных браузерах

Запуск тестов в конкретном браузере:

pytest test_login.py --browser webkit

Запуск тестов в нескольких браузерах:

pytest test_login.py --browser webkit --browser firefox

Тестирование на мобильных экранах:

pytest test_login.py --device="iPhone 13"

Тестирование в брендированных браузерах:

pytest test_login.py --browser-channel msedge

Chromium

Для Google Chrome, Microsoft Edge и других браузеров на базе Chromium по умолчанию Playwright использует сборки Chromium с открытым исходным кодом. Поскольку проект Chromium опережает брендированные браузеры, когда мир использует Google Chrome N, Playwright уже поддерживает Chromium N+1, который будет выпущен в Google Chrome и Microsoft Edge через несколько недель.

Chromium: headless shell

Playwright поставляется с обычной сборкой Chromium для операций с интерфейсом и отдельной оболочкой Chromium headless для режима без интерфейса.

Если вы запускаете тесты только в headless shell (т.е. опция channel не указана), например, в CI, вы можете избежать загрузки полного браузера Chromium, передав --only-shell во время установки.

# только запуск тестов в headless режиме
playwright install --with-deps --only-shell

Chromium: новый headless режим

Вы можете выбрать новый headless режим, используя канал 'chromium'. Как говорится в официальной документации Chrome:

Новый Headless, с другой стороны, это настоящий браузер Chrome, и поэтому он более аутентичен, надежен и предлагает больше функций. Это делает его более подходящим для высокоточного тестирования веб-приложений или тестирования расширений браузера.

См. вопрос #33566 для подробностей.

pytest test_login.py --browser-channel chromium

С новым headless режимом вы можете пропустить загрузку headless shell во время установки браузера, используя опцию --no-shell:

# только запуск тестов в headless режиме
playwright install --with-deps --no-shell

Google Chrome и Microsoft Edge

Хотя Playwright может загружать и использовать последнюю сборку Chromium, он может работать с брендированными браузерами Google Chrome и Microsoft Edge, доступными на машине (обратите внимание, что Playwright не устанавливает их по умолчанию). В частности, текущая версия Playwright будет поддерживать стабильные и бета-каналы этих браузеров.

Доступные каналы: chrome, msedge, chrome-beta, msedge-beta, chrome-dev, msedge-dev, chrome-canary, msedge-canary.

warning

Определенные корпоративные политики браузера могут повлиять на способность Playwright запускать и управлять Google Chrome и Microsoft Edge. Запуск в среде с политиками браузера выходит за рамки проекта Playwright.

warning

Google Chrome и Microsoft Edge перешли на новую реализацию headless режима, которая ближе к обычному режиму с интерфейсом. Это отличается от оболочки Chromium headless, которая используется в Playwright по умолчанию при запуске в headless режиме, поэтому ожидайте различий в поведении в некоторых случаях. См. вопрос #33566 для подробностей.

pytest test_login.py --browser-channel msedge

Альтернативно, при использовании библиотеки напрямую, вы можете указать канал браузера при запуске браузера:

from playwright.sync_api import sync_playwright

with sync_playwright() as p:
# Канал может быть "chrome", "msedge", "chrome-beta", "msedge-beta" или "msedge-dev".
browser = p.chromium.launch(channel="msedge")
page = browser.new_page()
page.goto("http://playwright.dev")
print(page.title())
browser.close()

Установка Google Chrome и Microsoft Edge

Если Google Chrome или Microsoft Edge недоступны на вашем компьютере, вы можете установить их с помощью командной строки Playwright:

playwright install msedge
warning

Установки Google Chrome или Microsoft Edge будут установлены в стандартное глобальное расположение вашей операционной системы, заменяя вашу текущую установку браузера.

Запустите с опцией --help, чтобы увидеть полный список браузеров, которые можно установить.

Когда использовать Google Chrome и Microsoft Edge, а когда нет?

По умолчанию

Использование конфигурации Playwright по умолчанию с последним Chromium - это хорошая идея в большинстве случаев. Поскольку Playwright опережает стабильные каналы для браузеров, это дает уверенность, что предстоящие выпуски Google Chrome или Microsoft Edge не сломают ваш сайт. Вы обнаруживаете поломки заранее и у вас есть много времени, чтобы их исправить до официального обновления Chrome.

Регрессионное тестирование

Тем не менее, политики тестирования часто требуют проведения регрессионного тестирования на текущих общедоступных браузерах. В этом случае вы можете выбрать один из стабильных каналов, "chrome" или "msedge".

Медиа-кодеки

Еще одна причина для тестирования с использованием официальных бинарных файлов - это тестирование функциональности, связанной с медиа-кодеками. Chromium не имеет всех кодеков, которые Google Chrome или Microsoft Edge включают из-за различных лицензионных соображений и соглашений. Если ваш сайт полагается на такие кодеки (что редко бывает), вы также захотите использовать официальный канал.

Корпоративная политика

Google Chrome и Microsoft Edge уважают корпоративные политики, которые включают ограничения на возможности, сетевой прокси, обязательные расширения, которые мешают тестированию. Поэтому, если вы являетесь частью организации, использующей такие политики, проще всего использовать встроенный Chromium для вашего локального тестирования, вы все еще можете выбрать стабильные каналы на ботах, которые обычно свободны от таких ограничений.

Firefox

Версия Firefox в Playwright соответствует последней сборке Firefox Stable. Playwright не работает с брендированной версией Firefox, так как он полагается на патчи.

Обратите внимание, что доступность определенных функций, которые сильно зависят от базовой платформы, может варьироваться в зависимости от операционных систем. Например, доступные медиа-кодеки существенно различаются между Linux, macOS и Windows.

WebKit

WebKit в Playwright основан на последних исходных кодах основной ветки WebKit, часто до того, как эти обновления будут включены в Apple Safari и другие браузеры на базе WebKit. Это дает много времени для реакции на потенциальные проблемы с обновлением браузера. Playwright не работает с брендированной версией Safari, так как он полагается на патчи. Вместо этого вы можете тестировать, используя самую последнюю сборку WebKit.

Обратите внимание, что доступность определенных функций, которые сильно зависят от базовой платформы, может варьироваться в зависимости от операционных систем. Например, доступные медиа-кодеки существенно различаются между Linux, macOS и Windows. Хотя запуск WebKit на Linux CI обычно является наиболее доступным вариантом, для наиболее близкого к Safari опыта вы должны запускать WebKit на Mac, например, если вы воспроизводите видео.

Установка за файрволом или прокси

По умолчанию Playwright загружает браузеры с CDN Microsoft.

Иногда компании поддерживают внутренний прокси, который блокирует прямой доступ к общедоступным ресурсам. В этом случае Playwright можно настроить для загрузки браузеров через прокси-сервер.

pip install playwright
HTTPS_PROXY=https://192.0.2.1 playwright install

Если запросы прокси перехватываются с помощью пользовательского недоверенного центра сертификации (CA) и это приводит к Error: self signed certificate in certificate chain при загрузке браузеров, вы должны установить свои пользовательские корневые сертификаты через переменную окружения NODE_EXTRA_CA_CERTS перед установкой браузеров:

export NODE_EXTRA_CA_CERTS="/path/to/cert.pem"

Если ваша сеть медленно подключается к архиву браузеров Playwright, вы можете увеличить время ожидания подключения в миллисекундах с помощью переменной окружения PLAYWRIGHT_DOWNLOAD_CONNECTION_TIMEOUT:

pip install playwright
PLAYWRIGHT_DOWNLOAD_CONNECTION_TIMEOUT=120000 playwright install

Если вы устанавливаете зависимости и вам нужно использовать прокси на Linux, убедитесь, что вы запускаете команду от имени пользователя root. В противном случае Playwright попытается стать root и не передаст переменные окружения, такие как HTTPS_PROXY, в менеджер пакетов Linux.

sudo HTTPS_PROXY=https://192.0.2.1 playwright install-deps

Загрузка из репозитория артефактов

По умолчанию Playwright загружает браузеры с CDN Microsoft.

Иногда компании поддерживают внутренний репозиторий артефактов для размещения бинарных файлов браузеров. В этом случае Playwright можно настроить для загрузки из пользовательского расположения, используя переменную окружения PLAYWRIGHT_DOWNLOAD_HOST.

pip install playwright
PLAYWRIGHT_DOWNLOAD_HOST=http://192.0.2.1 playwright install

Также возможно использовать хосты загрузки для каждого браузера, используя переменные окружения PLAYWRIGHT_CHROMIUM_DOWNLOAD_HOST, PLAYWRIGHT_FIREFOX_DOWNLOAD_HOST и PLAYWRIGHT_WEBKIT_DOWNLOAD_HOST, которые имеют приоритет над PLAYWRIGHT_DOWNLOAD_HOST.

pip install playwright
PLAYWRIGHT_FIREFOX_DOWNLOAD_HOST=http://203.0.113.3 PLAYWRIGHT_DOWNLOAD_HOST=http://192.0.2.1 playwright install

Управление бинарными файлами браузеров

Playwright загружает браузеры Chromium, WebKit и Firefox в кэш-папки, специфичные для операционной системы:

  • %USERPROFILE%\AppData\Local\ms-playwright на Windows
  • ~/Library/Caches/ms-playwright на macOS
  • ~/.cache/ms-playwright на Linux

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

du -hs ~/Library/Caches/ms-playwright/*
281M chromium-XXXXXX
187M firefox-XXXX
180M webkit-XXXX

Вы можете изменить поведение по умолчанию, используя переменные окружения. При установке Playwright, попросите его загрузить браузеры в определенное место:

pip install playwright
PLAYWRIGHT_BROWSERS_PATH=$HOME/pw-browsers python -m playwright install

При запуске скриптов Playwright, попросите его искать браузеры в общем месте.

PLAYWRIGHT_BROWSERS_PATH=$HOME/pw-browsers python playwright_script.py

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

примечание

Разработчики могут включить этот режим, экспортируя PLAYWRIGHT_BROWSERS_PATH=$HOME/pw-browsers в своем .bashrc.

Удаление устаревших браузеров

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

Чтобы отказаться от удаления неиспользуемых браузеров, вы можете установить переменную окружения PLAYWRIGHT_SKIP_BROWSER_GC=1.

Удаление браузеров

Это удалит браузеры (chromium, firefox, webkit) текущей установки Playwright:

playwright uninstall

Чтобы удалить браузеры других установок Playwright, передайте флаг --all:

playwright uninstall --all