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

Браузеры

Введение

Каждая версия 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.

warning

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

warning

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
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 можно настроить для загрузки браузеров через прокси-сервер.

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 перед установкой браузеров:

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

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

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.

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.

PLAYWRIGHT_FIREFOX_DOWNLOAD_HOST=http://203.0.113.3 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 попросите его загрузить браузеры в определенное место:

PLAYWRIGHT_BROWSERS_PATH=$HOME/pw-browsers pwsh bin/Debug/netX/playwright.ps1 install

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

PLAYWRIGHT_BROWSERS_PATH=$HOME/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