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

Браузеры

Введение

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

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

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

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

mvn exec:java -e -D exec.mainClass=com.microsoft.playwright.CLI -D exec.args="install"

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

mvn exec:java -e -D exec.mainClass=com.microsoft.playwright.CLI -D exec.args="install webkit"

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

mvn exec:java -e -D exec.mainClass=com.microsoft.playwright.CLI -D exec.args="install --help"

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

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

mvn exec:java -e -D exec.mainClass=com.microsoft.playwright.CLI -D exec.args="install-deps"

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

mvn exec:java -e -D exec.mainClass=com.microsoft.playwright.CLI -D exec.args="install-deps chromium"

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

mvn exec:java -e -D exec.mainClass=com.microsoft.playwright.CLI -D exec.args="install --with-deps chromium"

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

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

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

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

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

import com.microsoft.playwright.*;

public class Example {
public static void main(String[] args) {
try (Playwright playwright = Playwright.create()) {
// Запуск chromium, firefox или webkit.
Browser browser = playwright.chromium().launch();
Page page = browser.newPage();
// ...
}
}
}

Запуск тестов в нескольких браузерах на основе переменной окружения BROWSER:

import com.microsoft.playwright.*;

public class Example {
public static void main(String[] args) {
try (Playwright playwright = Playwright.create()) {
Browser browser = null;
String browserName = System.getenv("BROWSER");
if (browserName.equals("chromium")) {
browser = playwright.chromium().launch();
} else if (browserName.equals("firefox")) {
browser = playwright.firefox().launch();
} else if (browserName.equals("webkit")) {
browser = playwright.webkit().launch();
}
Page page = browser.newPage();
// ...
}
}
}

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 режиме
mvn exec:java -e -D exec.mainClass=com.microsoft.playwright.CLI -D exec.args="install --with-deps --only-shell"

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

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

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

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

import com.microsoft.playwright.*;

public class Example {
public static void main(String[] args) {
try (Playwright playwright = Playwright.create()) {
Browser browser = playwright.chromium().launch(new BrowserType.LaunchOptions().setChannel("chromium"));
Page page = browser.newPage();
// ...
}
}
}

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

# только запуск тестов в headless режиме
mvn exec:java -e -D exec.mainClass=com.microsoft.playwright.CLI -D exec.args="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 для подробностей.

import com.microsoft.playwright.*;

public class Example {
public static void main(String[] args) {
try (Playwright playwright = Playwright.create()) {
// Канал может быть "chrome", "msedge", "chrome-beta", "msedge-beta" или "msedge-dev".
Browser browser = playwright.chromium().launch(new BrowserType.LaunchOptions().setChannel("msedge"));
Page page = browser.newPage();
// ...
}
}
}

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

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

mvn exec:java -e -D exec.mainClass=com.microsoft.playwright.CLI -D exec.args="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 mvn exec:java -e -D exec.mainClass=com.microsoft.playwright.CLI -D exec.args="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 mvn exec:java -e -D exec.mainClass=com.microsoft.playwright.CLI -D exec.args="install"

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

sudo HTTPS_PROXY=https://192.0.2.1 mvn exec:java -e -D exec.mainClass=com.microsoft.playwright.CLI -D exec.args="install-deps"

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

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

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

PLAYWRIGHT_DOWNLOAD_HOST=http://192.0.2.1 mvn exec:java -e -D exec.mainClass=com.microsoft.playwright.CLI -D exec.args="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 mvn exec:java -e -D exec.mainClass=com.microsoft.playwright.CLI -D exec.args="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 mvn exec:java -e -D exec.mainClass=com.microsoft.playwright.CLI -D exec.args="install"

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

PLAYWRIGHT_BROWSERS_PATH=$HOME/pw-browsers mvn test

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

примечание

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

Пропуск загрузки браузеров

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

Это можно сделать, установив переменную PLAYWRIGHT_SKIP_BROWSER_DOWNLOAD перед установкой.

PLAYWRIGHT_SKIP_BROWSER_DOWNLOAD=1 mvn test

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

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

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

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

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

mvn exec:java -e -D exec.mainClass=com.microsoft.playwright.CLI -D exec.args="uninstall"

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

mvn exec:java -e -D exec.mainClass=com.microsoft.playwright.CLI -D exec.args="uninstall --all"