Браузеры
Введение
Каждая версия Playwright требует определенных версий бинарных файлов браузеров для работы. Вам нужно будет использовать Playwright CLI для установки этих браузеров.
С каждым выпуском Playwright обновляет версии поддерживаемых браузеров, чтобы последняя версия Playwright поддерживала последние версии браузеров в любой момент времени. Это означает, что каждый раз, когда вы обновляете Playwright, вам может потребоваться повторно запустить команду install
в CLI.
Установка браузеров
Playwright может устанавливать поддерживаемые браузеры. Запуск команды без аргументов установит браузеры по умолчанию.
pwsh bin/Debug/netX/playwright.ps1 install
Вы также можете установить конкретные браузеры, указав аргумент:
pwsh bin/Debug/netX/playwright.ps1 install webkit
Посмотреть все поддерживаемые браузеры:
pwsh bin/Debug/netX/playwright.ps1 install --help
Установка браузеров через API
Возможно выполнение команд командной строки через .NET API:
var exitCode = Microsoft.Playwright.Program.Main(new[] {"install"});
if (exitCode != 0)
{
throw new Exception($"Playwright завершился с кодом {exitCode}");
}
Установка системных зависимостей
Системные зависимости могут быть установлены автоматически. Это полезно для CI-сред.
pwsh bin/Debug/netX/playwright.ps1 install-deps
Вы также можете установить зависимости для одного браузера, передав его в качестве аргумента:
pwsh bin/Debug/netX/playwright.ps1 install-deps chromium
Также возможно комбинировать install-deps
с install
, чтобы браузеры и зависимости ОС устанавливались одной командой.
pwsh bin/Debug/netX/playwright.ps1 install --with-deps chromium
См. системные требования для официально поддерживаемых операционных систем.
Настройка браузеров
Playwright может запускать тесты в браузерах Chromium, WebKit и Firefox, а также в брендированных браузерах, таких как Google Chrome и Microsoft Edge. Он также может работать на эмулируемых планшетах и мобильных устройствах. См. реестр параметров устройств для полного списка выбранных настольных, планшетных и мобильных устройств.
Запуск тестов в разных браузерах
Запуск тестов в конкретном браузере:
dotnet test -- Playwright.BrowserName=webkit
Чтобы запустить ваш тест в нескольких браузерах или конфигурациях, вам нужно вызвать команду dotnet test
несколько раз. Вы можете либо указать переменную окружения BROWSER
, либо установить Playwright.BrowserName
через файл runsettings:
dotnet test --settings:chromium.runsettings
dotnet test --settings:firefox.runsettings
dotnet test --settings:webkit.runsettings
<?xml version="1.0" encoding="utf-8"?>
<RunSettings>
<Playwright>
<BrowserName>chromium</BrowserName>
</Playwright>
</RunSettings>
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 shell для режима без интерфейса.
Если вы запускаете тесты только в headless shell (т.е. опция channel
не указана), например, в CI, вы можете избежать загрузки полного браузера Chromium, передав --only-shell
во время установки.
# только запуск тестов в headless режиме
pwsh bin/Debug/netX/playwright.ps1 install --with-deps --only-shell
Chromium: новый headless режим
Вы можете выбрать новый headless режим, используя канал 'chromium'
. Как говорится в официальной документации Chrome:
Новый Headless, с другой стороны, это настоящий браузер Chrome, и поэтому он более аутентичен, надежен и предлагает больше функций. Это делает его более подходящим для высокоточного тестирования веб-приложений от начала до конца или тестирования расширений браузера.
См. вопрос #33566 для подробностей.
<?xml version="1.0" encoding="utf-8"?>
<RunSettings>
<Playwright>
<BrowserName>chromium</BrowserName>
<LaunchOptions>
<Channel>chromium</Channel>
</LaunchOptions>
</Playwright>
</RunSettings>
dotnet test -- Playwright.BrowserName=chromium Playwright.LaunchOptions.Channel=chromium
С новым headless режимом вы можете пропустить загрузку headless shell во время установки браузера, используя опцию --no-shell
:
# только запуск тестов в headless режиме
pwsh bin/Debug/netX/playwright.ps1 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 shell, который используется в Playwright по умолчанию при запуске в headless режиме, поэтому ожидайте различий в поведении в некоторых случаях. См. вопрос #33566 для подробностей.
<?xml version="1.0" encoding="utf-8"?>
<RunSettings>
<Playwright>
<BrowserName>chromium</BrowserName>
<LaunchOptions>
<Channel>msedge</Channel>
</LaunchOptions>
</Playwright>
</RunSettings>
dotnet test -- Playwright.BrowserName=chromium Playwright.LaunchOptions.Channel=msedge
Установка Google Chrome и Microsoft Edge
Если Google Chrome или Microsoft Edge недоступны на вашей машине, вы можете установить их с помощью инструмента командной строки Playwright:
pwsh bin/Debug/netX/playwright.ps1 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
HTTPS_PROXY=https://192.0.2.1 pwsh bin/Debug/netX/playwright.ps1 install
$Env:HTTPS_PROXY="https://192.0.2.1"
pwsh bin/Debug/netX/playwright.ps1 install
set HTTPS_PROXY=https://192.0.2.1
pwsh bin/Debug/netX/playwright.ps1 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
PLAYWRIGHT_DOWNLOAD_CONNECTION_TIMEOUT=120000 pwsh bin/Debug/netX/playwright.ps1 install
$Env:PLAYWRIGHT_DOWNLOAD_CONNECTION_TIMEOUT="120000"
pwsh bin/Debug/netX/playwright.ps1 install
set PLAYWRIGHT_DOWNLOAD_CONNECTION_TIMEOUT=120000
pwsh bin/Debug/netX/playwright.ps1 install
Если вы устанавливаете зависимости и вам нужно использовать прокси на Linux, убедитесь, что вы запускаете команду от имени пользователя root. В противном случае Playwright попытается стать root и не передаст такие переменные окружения, как HTTPS_PROXY
, в менеджер пакетов Linux.
sudo HTTPS_PROXY=https://192.0.2.1 pwsh bin/Debug/netX/playwright.ps1 install-deps
Загрузка из репозитория артефактов
По умолчанию Playwright загружает браузеры с CDN Microsoft.
Иногда компании поддерживают внутренний репозиторий артефактов для размещения бинарных файлов браузеров. В этом случае Playwright можно настроить для загрузки из пользовательского расположения, используя переменную окружения PLAYWRIGHT_DOWNLOAD_HOST
.
- Bash
- PowerShell
- Batch
PLAYWRIGHT_DOWNLOAD_HOST=http://192.0.2.1 pwsh bin/Debug/netX/playwright.ps1 install
$Env:PLAYWRIGHT_DOWNLOAD_HOST="http://192.0.2.1"
pwsh bin/Debug/netX/playwright.ps1 install
set PLAYWRIGHT_DOWNLOAD_HOST=http://192.0.2.1
pwsh bin/Debug/netX/playwright.ps1 install
Также возможно использовать хосты загрузки для каждого браузера, используя переменные окружения PLAYWRIGHT_CHROMIUM_DOWNLOAD_HOST
, PLAYWRIGHT_FIREFOX_DOWNLOAD_HOST
и PLAYWRIGHT_WEBKIT_DOWNLOAD_HOST
, которые имеют приоритет над PLAYWRIGHT_DOWNLOAD_HOST
.
- Bash
- PowerShell
- Batch
PLAYWRIGHT_FIREFOX_DOWNLOAD_HOST=http://203.0.113.3 PLAYWRIGHT_DOWNLOAD_HOST=http://192.0.2.1 pwsh bin/Debug/netX/playwright.ps1 install
$Env:PLAYWRIGHT_DOWNLOAD_HOST="http://192.0.2.1"
$Env:PLAYWRIGHT_FIREFOX_DOWNLOAD_HOST="http://203.0.113.3"
pwsh bin/Debug/netX/playwright.ps1 install
set PLAYWRIGHT_FIREFOX_DOWNLOAD_HOST=http://203.0.113.3
set PLAYWRIGHT_DOWNLOAD_HOST=http://192.0.2.1
pwsh bin/Debug/netX/playwright.ps1 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
PLAYWRIGHT_BROWSERS_PATH=$HOME/pw-browsers pwsh bin/Debug/netX/playwright.ps1 install
$Env:PLAYWRIGHT_BROWSERS_PATH="$Env:USERPROFILE\pw-browsers"
pwsh bin/Debug/netX/playwright.ps1 install
set PLAYWRIGHT_BROWSERS_PATH=%USERPROFILE%\pw-browsers
pwsh bin/Debug/netX/playwright.ps1 install
При запуске скриптов Playwright попросите его искать браузеры в общем расположении.
- Bash
- PowerShell
- Batch
PLAYWRIGHT_BROWSERS_PATH=$HOME/pw-browsers dotnet test
$Env:PLAYWRIGHT_BROWSERS_PATH="$Env:USERPROFILE\pw-browsers"
dotnet test
set PLAYWRIGHT_BROWSERS_PATH=%USERPROFILE%\pw-browsers
dotnet test
Playwright отслеживает пакеты, которым нужны эти браузеры, и будет удалять их по мере обновления Playwright до новых версий.
Разработчики могут включить этот режим, экспортировав PLAYWRIGHT_BROWSERS_PATH=$HOME/pw-browsers
в своем .bashrc
.
Удаление устаревших браузеров
Playwright отслеживает клиентов, которые используют его браузеры. Когда больше нет клиентов, которым требуется определенная версия браузера, эта версия удаляется из системы. Таким образом, вы можете безопасно использовать экземпляры Playwright разных версий и в то же время не тратить дисковое пространство на браузеры, которые больше не используются.
Чтобы отказаться от удаления неиспользуемых браузеров, вы можете установить переменную окружения PLAYWRIGHT_SKIP_BROWSER_GC=1
.
Удаление браузеров
Это удалит браузеры (chromium, firefox, webkit) текущей установки Playwright:
pwsh bin/Debug/netX/playwright.ps1 uninstall
Чтобы удалить браузеры других установок Playwright, также передайте флаг --all
:
pwsh bin/Debug/netX/playwright.ps1 uninstall --all