浏览器
每个版本的 Playwright 都需要特定版本的浏览器二进制文件才能运行。根据您使用的语言,Playwright 将在包安装时为您下载这些浏览器,或者您需要使用 Playwright CLI 来安装这些浏览器。
随着每个版本的发布,Playwright 都会更新其支持的浏览器版本,以便最新的 Playwright 随时支持最新的浏览器。这意味着每次更新 playwright 时,您可能需要重新运行 install CLI 命令。
Chromium
对于 Google Chrome、Microsoft Edge 和其他基于 Chromium 的浏览器,默认情况下,Playwright 使用开源 Chromium 构建。由于 Chromium 项目领先于品牌浏览器,当世界上使用 Google Chrome N 时,Playwright 已经支持 Chromium N+1,该版本将在几周后在 Google Chrome 和 Microsoft Edge 中发布。
还有一种方法可以选择使用 Google Chrome 或 Microsoft Edge 的品牌构建进行测试。有关何时选择加入稳定通道的详细信息,请参阅下面的 Google Chrome 和 Microsoft Edge 部分。
Firefox
Playwright 的 Firefox 版本与最近的 Firefox Stable 构建相匹配。
WebKit
Playwright 的 WebKit 版本与最近的 WebKit trunk 构建相匹配,在它被用于 Apple Safari 和其他基于 WebKit 的浏览器之前。这给了很多提前时间来应对潜在的浏览器更新问题。
Google Chrome 和 Microsoft Edge
虽然 Playwright 可以下载并使用最近的 Chromium 构建,但它可以针对机器上可用的现有 Google Chrome 和 Microsoft Edge 浏览器进行操作。特别是,当前的 Playwright 版本将支持这些浏览器的 Stable 和 Beta 通道。以下是如何选择加入使用现有浏览器:
- TypeScript
- JavaScript
- Library
import type { PlaywrightTestConfig } from '@playwright/test';
const config: PlaywrightTestConfig = {
use: {
channel: 'chrome',
},
};
export default config;
// @ts-check
/** @type {import('@playwright/test').PlaywrightTestConfig} */
const config = {
use: {
channel: 'chrome',
},
};
module.exports = config;
const { chromium } = require('playwright');
const browser = await chromium.launch({
channel: 'chrome' // 或 'msedge', 'chrome-beta', 'msedge-beta', 'msedge-dev', 等等。
});
何时使用 Google Chrome 和 Microsoft Edge,何时不使用?
默认值
大多数情况下,使用带有最新 Chromium 的默认 Playwright 配置是一个好主意。由于 Playwright 领先于浏览器的稳定通道,因此可以放心,即将发布的 Google Chrome 或 Microsoft Edge 版本不会破坏您的网站。您可以尽早发现损坏,并在官方 Chrome 更新之前有大量时间进行修复。
回归测试
话虽如此,测试策略通常要求针对当前公开可用的浏览器执行回归测试。在这种情况下,您可以选择加入稳定通道之一,"chrome" 或 "msedge"。
媒体编解码器
使用官方二进制文件进行测试的另一个原因是测试与媒体编解码器相关的功能。由于各种许可考虑和协议,Chromium 不具备 Google Chrome 或 Microsoft Edge 捆绑的所有编解码器。如果您的网站依赖于此类编解码器(这种情况很少见),您也希望使用官方通道。
企业策略
Google Chrome 和 Microsoft Edge 遵守企业策略,其中包括对功能、网络代理、强制扩展的限制,这些限制会阻碍测试。因此,如果您是使用此类策略的组织的一部分,最简单的方法是使用捆绑的 Chromium 进行本地测试,您仍然可以在通常没有此类限制的机器人上选择加入稳定通道。
管理浏览器二进制文件
Playwright 将 Chromium、WebKit 和 Firefox 浏览器下载到特定于操作系统的缓存文件夹中:
- Windows 上为
%USERPROFILE%\AppData\Local\ms-playwright - MacOS 上为
~/Library/Caches/ms-playwright - Linux 上为
~/.cache/ms-playwright
安装后,这些浏览器将占用几百兆字节的磁盘空间:
du -hs ~/Library/Caches/ms-playwright/*
109M chromium-XXXXXX
187M firefox-XXXX
180M webkit-XXXX
您可以使用环境变量覆盖默认行为。安装 Playwright 时,要求它将浏览器下载到特定位置:
- Bash
- PowerShell
- Batch
PLAYWRIGHT_BROWSERS_PATH=$HOME/pw-browsers npx playwright install
$env:PLAYWRIGHT_BROWSERS_PATH="$env:USERPROFILE\pw-browsers"
npx playwright install
set PLAYWRIGHT_BROWSERS_PATH=%USERPROFILE%\pw-browsers
npx playwright install
运行 Playwright 脚本时,要求它在共享位置搜索浏览器。
- Bash
- PowerShell
- Batch
PLAYWRIGHT_BROWSERS_PATH=$HOME/pw-browsers npx playwright test
$env:PLAYWRIGHT_BROWSERS_PATH="$env:USERPROFILE\pw-browsers"
npx playwright test
set PLAYWRIGHT_BROWSERS_PATH=%USERPROFILE%\pw-browsers
npx playwright test
Playwright 会跟踪需要这些浏览器的包,并在您将 Playwright 更新到较新版本时对它们进行垃圾回收。
开发人员可以通过在他们的 .bashrc 中导出 PLAYWRIGHT_BROWSERS_PATH=$HOME/pw-browsers 来选择加入此模式。
密封安装
您可以选择加入密封安装并将二进制文件放置在本地文件夹中:
- Bash
- PowerShell
- Batch
# 将二进制文件放置到 node_modules/playwright-core/.local-browsers
PLAYWRIGHT_BROWSERS_PATH=0 npx playwright install
# 将二进制文件放置到 node_modules\playwright-core\.local-browsers
$env:PLAYWRIGHT_BROWSERS_PATH=0
npx playwright install
# 将二进制文件放置到 node_modules\playwright-core\.local-browsers
set PLAYWRIGHT_BROWSERS_PATH=0
npx playwright install
在防火墙或代理后面安装
默认情况下,Playwright 从 Microsoft CDN 下载浏览器。
有时公司维护一个内部代理,阻止直接访问公共资源。在这种情况下,可以将 Playwright 配置为通过代理服务器下载浏览器。
- Bash
- PowerShell
- Batch
# 用于 Playwright Test
HTTPS_PROXY=https://192.0.2.1 npx playwright install
# 用于 Playwright Library
HTTPS_PROXY=https://192.0.2.1 npm install playwright
# 用于 Playwright Test
$env:HTTPS_PROXY="https://192.0.2.1"
npx playwright install
# 用于 Playwright Library
$env:HTTPS_PROXY="https://192.0.2.1"
npm install playwright
# 用于 Playwright Test
set HTTPS_PROXY=https://192.0.2.1
npx playwright install
# 用于 Playwright Library
set HTTPS_PROXY=https://192.0.2.1
npm install playwright
如果代理的请求被自定义不受信任的证书颁发机构 (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 npx playwright install
$env:PLAYWRIGHT_DOWNLOAD_CONNECTION_TIMEOUT="120000"
npx playwright install
set PLAYWRIGHT_DOWNLOAD_CONNECTION_TIMEOUT=120000
npx playwright install
从工件存储库下载
默认情况下,Playwright 从 Microsoft CDN 下载浏览器。
有时公司维护一个内部工件存储库来托管浏览器二进制文件。在这种情况下,可以将 Playwright 配置为使用 PLAYWRIGHT_DOWNLOAD_HOST 环境变量从自定义位置下载。
- Bash
- PowerShell
- Batch
# 用于 Playwright Test
PLAYWRIGHT_DOWNLOAD_HOST=192.0.2.1 npx playwright install
# 用于 Playwright Library
PLAYWRIGHT_DOWNLOAD_HOST=192.0.2.1 npm install playwright
# 用于 Playwright Test
$env:PLAYWRIGHT_DOWNLOAD_HOST="192.0.2.1"
npx playwright install
# 用于 Playwright Library
$env:PLAYWRIGHT_DOWNLOAD_HOST="192.0.2.1"
npm install playwright
# 用于 Playwright Test
set PLAYWRIGHT_DOWNLOAD_HOST=192.0.2.1
npx playwright install
# 用于 Playwright Library
set PLAYWRIGHT_DOWNLOAD_HOST=192.0.2.1
npm install playwright
也可以使用 PLAYWRIGHT_CHROMIUM_DOWNLOAD_HOST、PLAYWRIGHT_FIREFOX_DOWNLOAD_HOST 和 PLAYWRIGHT_WEBKIT_DOWNLOAD_HOST 环境变量使用每个浏览器的下载主机,这些变量优先于 PLAYWRIGHT_DOWNLOAD_HOST。
- Bash
- PowerShell
- Batch
# 用于 Playwright Test
PLAYWRIGHT_FIREFOX_DOWNLOAD_HOST=203.0.113.3 PLAYWRIGHT_DOWNLOAD_HOST=192.0.2.1 npx playwright install
# 用于 Playwright Library
PLAYWRIGHT_FIREFOX_DOWNLOAD_HOST=203.0.113.3 PLAYWRIGHT_DOWNLOAD_HOST=192.0.2.1 npm install playwright
# 用于 Playwright Test
$env:PLAYWRIGHT_FIREFOX_DOWNLOAD_HOST="203.0.113.3"
$env:PLAYWRIGHT_DOWNLOAD_HOST="192.0.2.1"
npx playwright install
# 用于 Playwright Library
$env:PLAYWRIGHT_FIREFOX_DOWNLOAD_HOST="203.0.113.3"
$env:PLAYWRIGHT_DOWNLOAD_HOST="192.0.2.1"
npm install playwright
# 用于 Playwright Test
set PLAYWRIGHT_FIREFOX_DOWNLOAD_HOST=203.0.113.3
set PLAYWRIGHT_DOWNLOAD_HOST=192.0.2.1
npx playwright install
# 用于 Playwright Library
set PLAYWRIGHT_FIREFOX_DOWNLOAD_HOST=203.0.113.3
set PLAYWRIGHT_DOWNLOAD_HOST=192.0.2.1
npm install playwright
跳过浏览器下载
在某些情况下,希望完全避免浏览器下载,因为浏览器二进制文件是单独管理的。
这可以通过在安装前设置 PLAYWRIGHT_SKIP_BROWSER_DOWNLOAD 变量来完成。
陈旧浏览器移除
Playwright 会跟踪使用其浏览器的客户端。当没有更多客户端需要特定版本的浏览器时,该版本将从系统中删除。这样,您可以安全地使用不同版本的 Playwright 实例,同时不会为不再使用的浏览器浪费磁盘空间。
要选择退出未使用的浏览器移除,您可以设置 PLAYWRIGHT_SKIP_BROWSER_GC=1 环境变量。