Браузеры
Введение
Каждая версия 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
.
Определенные корпоративные политики браузера могут повлиять на способность Playwright запускать и управлять Google Chrome и Microsoft Edge. Запуск в среде с политиками браузера выходит за рамки проекта Playwright.
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
Установки 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 можно настроить для загрузки браузеров через прокси-сервер.
- Bash
- PowerShell
- Batch
pip install playwright
HTTPS_PROXY=https://192.0.2.1 playwright install
$Env:HTTPS_PROXY="https://192.0.2.1"
pip install playwright
playwright install
set HTTPS_PROXY=https://192.0.2.1
pip install playwright
playwright install
Если запросы прокси перехватываются с помощью пользовательского недоверенного центра сертификации (CA) и это приводит к Error: self signed certificate in certificate chain
при загрузке браузеров, вы должны установить свои пользовательские корневые сертификаты через переменную окружения NODE_EXTRA_CA_CERTS
перед установкой браузеров:
- Bash
- PowerShell
- Batch
export NODE_EXTRA_CA_CERTS="/path/to/cert.pem"
$Env:NODE_EXTRA_CA_CERTS="C:\certs\root.crt"
set NODE_EXTRA_CA_CERTS="C:\certs\root.crt"
Если ваша сеть медленно подключается к архиву браузеров Playwright, вы можете увеличить время ожидания подключения в миллисекундах с помощью переменной окружения PLAYWRIGHT_DOWNLOAD_CONNECTION_TIMEOUT
:
- Bash
- PowerShell
- Batch
pip install playwright
PLAYWRIGHT_DOWNLOAD_CONNECTION_TIMEOUT=120000 playwright install
$Env:PLAYWRIGHT_DOWNLOAD_CONNECTION_TIMEOUT="120000"
pip install playwright
playwright install
set PLAYWRIGHT_DOWNLOAD_CONNECTION_TIMEOUT=120000
pip install playwright
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
.
- Bash
- PowerShell
- Batch
pip install playwright
PLAYWRIGHT_DOWNLOAD_HOST=http://192.0.2.1 playwright install
$Env:PLAYWRIGHT_DOWNLOAD_HOST="http://192.0.2.1"
pip install playwright
playwright install
set PLAYWRIGHT_DOWNLOAD_HOST=http://192.0.2.1
pip install playwright
playwright install
Также возможно использовать хосты загрузки для каждого браузера, используя переменные окружения PLAYWRIGHT_CHROMIUM_DOWNLOAD_HOST
, PLAYWRIGHT_FIREFOX_DOWNLOAD_HOST
и PLAYWRIGHT_WEBKIT_DOWNLOAD_HOST
, которые имеют приоритет над PLAYWRIGHT_DOWNLOAD_HOST
.
- Bash
- PowerShell
- Batch
pip install playwright
PLAYWRIGHT_FIREFOX_DOWNLOAD_HOST=http://203.0.113.3 PLAYWRIGHT_DOWNLOAD_HOST=http://192.0.2.1 playwright install
$Env:PLAYWRIGHT_FIREFOX_DOWNLOAD_HOST="http://203.0.113.3"
$Env:PLAYWRIGHT_DOWNLOAD_HOST="http://192.0.2.1"
pip install playwright
playwright install
set PLAYWRIGHT_FIREFOX_DOWNLOAD_HOST=http://203.0.113.3
set PLAYWRIGHT_DOWNLOAD_HOST=http://192.0.2.1
pip install playwright
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, попросите его загрузить браузеры в определенное место:
- Bash
- PowerShell
- Batch
pip install playwright
PLAYWRIGHT_BROWSERS_PATH=$HOME/pw-browsers python -m playwright install
$Env:PLAYWRIGHT_BROWSERS_PATH="$Env:USERPROFILE\pw-browsers"
pip install playwright
playwright install
set PLAYWRIGHT_BROWSERS_PATH=%USERPROFILE%\pw-browsers
pip install playwright
playwright install
При запуске скриптов Playwright, попросите его искать браузеры в общем месте.
- Bash
- PowerShell
- Batch
PLAYWRIGHT_BROWSERS_PATH=$HOME/pw-browsers python playwright_script.py
$Env:PLAYWRIGHT_BROWSERS_PATH="$Env:USERPROFILE\pw-browsers"
python playwright_script.py
set PLAYWRIGHT_BROWSERS_PATH=%USERPROFILE%\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