浏览器
简介
Playwright 的每个版本都需要特定版本的浏览器二进制文件才能运行。您需要使用 Playwright CLI 来安装这些浏览器。
在每次发布时,Playwright 都会更新其支持的浏览器版本,以便最新的 Playwright 始终支持最新的浏览器。这意味着每次更新 Playwright 时,您可能都需要重新运行 install
CLI 命令。
安装浏览器
Playwright 可以安装支持的浏览器。在不带任何参数的情况下运行该命令将安装默认浏览器。
npx playwright install
您还可以通过提供参数来安装特定浏览器。
npx playwright install webkit
查看所有支持的浏览器
npx playwright install --help
安装系统依赖项
系统依赖项可以自动安装。这对于 CI 环境很有用。
npx playwright install-deps
您还可以通过将其作为参数传递来安装单个浏览器的依赖项。
npx playwright install-deps chromium
也可以将 install-deps
与 install
结合使用,以便使用单个命令安装浏览器和操作系统依赖项。
npx playwright install --with-deps chromium
请参阅 系统要求 以了解官方支持的操作系统。
定期更新 Playwright
通过使您的 Playwright 版本保持最新,您将能够使用新功能并在最新的浏览器版本上测试您的应用程序,并在最新浏览器版本发布给公众之前捕获错误。
# Update playwright
npm install -D @playwright/test@latest
# Install new browsers
npx playwright install
查看 发行说明 以了解最新版本是什么以及发布了哪些更改。
# See what version of Playwright you have by running the following command
npx playwright --version
配置浏览器
Playwright 可以运行 Chromium、WebKit 和 Firefox 浏览器以及 Google Chrome 和 Microsoft Edge 等品牌浏览器上的测试。它还可以模拟平板电脑和移动设备上运行。请参阅 设备参数注册表 以获取所选桌面、平板电脑和移动设备的完整列表。
在不同的浏览器上运行测试
Playwright 可以通过在配置中设置 **项目** 来在多个浏览器和配置中运行您的测试。您还可以为每个项目添加 不同的选项。
import { defineConfig, devices } from '@playwright/test';
export default defineConfig({
projects: [
/* Test against desktop browsers */
{
name: 'chromium',
use: { ...devices['Desktop Chrome'] },
},
{
name: 'firefox',
use: { ...devices['Desktop Firefox'] },
},
{
name: 'webkit',
use: { ...devices['Desktop Safari'] },
},
/* Test against mobile viewports. */
{
name: 'Mobile Chrome',
use: { ...devices['Pixel 5'] },
},
{
name: 'Mobile Safari',
use: { ...devices['iPhone 12'] },
},
/* Test against branded browsers. */
{
name: 'Google Chrome',
use: { ...devices['Desktop Chrome'], channel: 'chrome' }, // or 'chrome-beta'
},
{
name: 'Microsoft Edge',
use: { ...devices['Desktop Edge'], channel: 'msedge' }, // or 'msedge-dev'
},
],
});
Playwright 默认情况下将运行所有项目。
npx playwright test
Running 7 tests using 5 workers
✓ [chromium] › example.spec.ts:3:1 › basic test (2s)
✓ [firefox] › example.spec.ts:3:1 › basic test (2s)
✓ [webkit] › example.spec.ts:3:1 › basic test (2s)
✓ [Mobile Chrome] › example.spec.ts:3:1 › basic test (2s)
✓ [Mobile Safari] › example.spec.ts:3:1 › basic test (2s)
✓ [Google Chrome] › example.spec.ts:3:1 › basic test (2s)
✓ [Microsoft Edge] › example.spec.ts:3:1 › basic test (2s)
使用 --project
命令行选项运行单个项目。
npx playwright test --project=firefox
Running 1 test using 1 worker
✓ [firefox] › example.spec.ts:3:1 › basic test (2s)
使用 VS Code 扩展,您可以通过选中 Playwright 侧边栏中浏览器名称旁边的复选框来在不同的浏览器上运行测试。这些名称在 Playwright 配置文件的项目部分中定义。安装 Playwright 时的默认配置为您提供了 3 个项目,Chromium、Firefox 和 WebKit。默认情况下选择第一个项目。
要在多个项目(浏览器)上运行测试,请通过选中项目名称旁边的复选框来选择每个项目。
Chromium
对于 Google Chrome、Microsoft Edge 和其他基于 Chromium 的浏览器,默认情况下,Playwright 使用开源 Chromium 版本。由于 Chromium 项目领先于品牌浏览器,因此当世界使用 Google Chrome N 时,Playwright 已经支持 Chromium N+1,该版本将在几周后在 Google Chrome 和 Microsoft Edge 中发布。
Google Chrome 和 Microsoft Edge
虽然 Playwright 可以下载并使用最新的 Chromium 版本,但它可以针对机器上可用的品牌 Google Chrome 和 Microsoft Edge 浏览器运行(请注意,Playwright 不会默认安装它们)。特别是,当前的 Playwright 版本将支持这些浏览器的稳定版和测试版通道。
可用的通道为 chrome
、msedge
、chrome-beta
、msedge-beta
或 msedge-dev
。
某些企业浏览器策略可能会影响 Playwright 启动和控制 Google Chrome 和 Microsoft Edge 的能力。在使用浏览器策略的环境中运行不在 Playwright 项目的范围内。
import { defineConfig, devices } from '@playwright/test';
export default defineConfig({
projects: [
/* Test against branded browsers. */
{
name: 'Google Chrome',
use: { ...devices['Desktop Chrome'], channel: 'chrome' }, // or 'chrome-beta'
},
{
name: 'Microsoft Edge',
use: { ...devices['Desktop Edge'], channel: 'msedge' }, // or "msedge-beta" or 'msedge-dev'
},
],
});
安装 Google Chrome 和 Microsoft Edge
如果您的机器上没有 Google Chrome 或 Microsoft Edge,您可以使用 Playwright 命令行工具安装它们。
npx playwright install msedge
Google Chrome 或 Microsoft Edge 安装将安装在操作系统的默认全局位置,覆盖您当前的浏览器安装。
使用 --help
选项运行以查看可以安装的浏览器的完整列表。
何时使用 Google Chrome 和 Microsoft Edge,何时不使用?
默认值
大多数情况下,使用最新的 Chromium 和默认的 Playwright 配置是一个好主意。由于 Playwright 领先于浏览器的稳定版通道,因此可以放心,即将发布的 Google Chrome 或 Microsoft Edge 版本不会破坏您的网站。您可以尽早发现故障,并在正式的 Chrome 更新发布之前有足够的时间修复它。
回归测试
话虽如此,测试策略通常要求针对当前公开可用的浏览器执行回归测试。在这种情况下,您可以选择其中一个稳定版通道,"chrome"
或 "msedge"
。
媒体编解码器
使用官方二进制文件进行测试的另一个原因是测试与媒体编解码器相关的功能。由于各种许可考虑和协议,Chromium 没有 Google Chrome 或 Microsoft Edge 捆绑的所有编解码器。如果您的网站依赖于此类编解码器(这种情况很少见),您也需要使用官方通道。
企业策略
Google Chrome 和 Microsoft Edge 尊重企业策略,其中包括对功能、网络代理、阻碍测试的强制扩展的限制。因此,如果您是使用此类策略的组织的一部分,最简单的方法是将捆绑的 Chromium 用于本地测试,您仍然可以在通常不受此类限制影响的机器上选择稳定版通道。
Firefox
Playwright 的 Firefox 版本与最近的 Firefox 稳定版 版本匹配。Playwright 不适用于 Firefox 的品牌版本,因为它依赖于补丁。
请注意,某些功能的可用性(很大程度上取决于底层平台)可能因操作系统而异。例如,可用的媒体编解码器在 Linux、macOS 和 Windows 之间差异很大。
WebKit
Playwright 的 WebKit 来自最新的 WebKit 主分支源代码,通常在这些更新集成到 Apple Safari 和其他基于 WebKit 的浏览器之前。这为应对潜在的浏览器更新问题提供了充足的准备时间。Playwright 不适用于 Safari 的品牌版本,因为它依赖于补丁。相反,您可以使用最新的 WebKit 版本进行测试。
请注意,某些功能的可用性(很大程度上取决于底层平台)可能因操作系统而异。例如,可用的媒体编解码器在 Linux、macOS 和 Windows 之间差异很大。虽然在 Linux CI 上运行 WebKit 通常是最经济实惠的选择,但为了获得最接近 Safari 的体验,您应该在 Mac 上运行 WebKit,例如如果您要进行视频播放。
在防火墙或代理后面安装
默认情况下,Playwright 从 Microsoft 的 CDN 下载浏览器。
有时公司会维护内部代理来阻止对公共资源的直接访问。在这种情况下,可以配置 Playwright 通过代理服务器下载浏览器。
- Bash
- PowerShell
- Batch
HTTPS_PROXY=https://192.0.2.1 npx playwright install
$Env:HTTPS_PROXY="https://192.0.2.1"
npx playwright install
set HTTPS_PROXY=https://192.0.2.1
npx 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
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
如果您正在 安装依赖项 并且需要在 Linux 上使用代理,请确保以 root 用户身份运行命令。否则,Playwright 将尝试获取 root 权限,并且不会将 HTTPS_PROXY
等环境变量传递给 Linux 包管理器。
sudo HTTPS_PROXY=https://192.0.2.1 npx playwright install-deps
从制品库下载
默认情况下,Playwright 从 Microsoft 的 CDN 下载浏览器。
有时公司会维护内部制品库来托管浏览器二进制文件。在这种情况下,可以使用 PLAYWRIGHT_DOWNLOAD_HOST
环境变量将 Playwright 配置为从自定义位置下载。
- Bash
- PowerShell
- Batch
PLAYWRIGHT_DOWNLOAD_HOST=http://192.0.2.1 npx playwright install
$Env:PLAYWRIGHT_DOWNLOAD_HOST="http://192.0.2.1"
npx playwright install
set PLAYWRIGHT_DOWNLOAD_HOST=http://192.0.2.1
npx playwright 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 npx playwright install
$Env:PLAYWRIGHT_FIREFOX_DOWNLOAD_HOST="http://203.0.113.3"
$Env:PLAYWRIGHT_DOWNLOAD_HOST="http://192.0.2.1"
npx playwright install
set PLAYWRIGHT_FIREFOX_DOWNLOAD_HOST=http://203.0.113.3
set PLAYWRIGHT_DOWNLOAD_HOST=http://192.0.2.1
npx playwright install
管理浏览器二进制文件
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/*
281M 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
# Places binaries to node_modules/playwright-core/.local-browsers
PLAYWRIGHT_BROWSERS_PATH=0 npx playwright install
# Places binaries to node_modules\playwright-core\.local-browsers
$Env:PLAYWRIGHT_BROWSERS_PATH=0
npx playwright install
# Places binaries to node_modules\playwright-core\.local-browsers
set PLAYWRIGHT_BROWSERS_PATH=0
npx playwright install
PLAYWRIGHT_BROWSERS_PATH
不会更改 Google Chrome 和 Microsoft Edge 的安装路径。
过时浏览器移除
Playwright 会跟踪使用其浏览器的客户端。当不再有客户端需要特定版本的浏览器时,该版本将从系统中删除。这样,您可以安全地使用不同版本的 Playwright 实例,同时也不会浪费不再使用的浏览器的磁盘空间。
要选择退出未使用浏览器移除,可以设置 PLAYWRIGHT_SKIP_BROWSER_GC=1
环境变量。
卸载浏览器
这将删除当前 Playwright 安装的浏览器(chromium、firefox、webkit)。
npx playwright uninstall
要删除其他 Playwright 安装的浏览器,请传递 --all
标志。
npx playwright uninstall --all