浏览器
每个版本的 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 通道。以下是如何选择使用现有浏览器的方法:
- Sync
- Async
# Can be "msedge", "chrome-beta", "msedge-beta", "msedge-dev", etc.
browser = playwright.chromium.launch(channel="chrome")
# Can be "msedge", "chrome-beta", "msedge-beta", "msedge-dev", etc.
browser = await playwright.chromium.launch(channel="chrome")
When to use Google Chrome & Microsoft Edge and when not to?
Defaults
大多数情况下,使用带有最新 Chromium 的默认 Playwright 配置是一个好主意。由于 Playwright 领先于浏览器的稳定通道,因此可以放心,即将发布的 Google Chrome 或 Microsoft Edge 版本不会破坏您的网站。您可以及早发现损坏,并在官方 Chrome 更新之前有大量时间进行修复。
Regression testing
话虽如此,测试策略通常要求针对当前公开可用的浏览器执行回归测试。在这种情况下,您可以选择加入稳定通道之一,"chrome" 或 "msedge"。
Media codecs
使用官方二进制文件进行测试的另一个原因是测试与媒体编解码器相关的功能。由于各种许可考虑和协议,Chromium 没有 Google Chrome 或 Microsoft Edge 捆绑的所有编解码器。如果您的网站依赖于此类编解码器(这种情况很少见),您也希望使用官方通道。
Enterprise policy
Google Chrome 和 Microsoft Edge 遵守企业策略,其中包括对功能、网络代理、强制扩展的限制,这些限制会阻碍测试。因此,如果您属于使用此类策略的组织,最简单的方法是使用捆绑的 Chromium 进行本地测试,您仍然可以在通常不受此类限制的机器人上选择加入稳定通道。
Managing browser binaries
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
pip install playwright
PLAYWRIGHT_BROWSERS_PATH=$HOME/pw-browsers python -m playwright install
$env:PLAYWRIGHT_BROWSERS_PATH="$env:USERPROFILE\pw-browsers"
pip install playwright
playwright install
set PLAYWRIGHT_BROWSERS_PATH=%USERPROFILE%\pw-browsers
pip install playwright
playwright install
运行 Playwright 脚本时,要求它在共享位置搜索浏览器。
- Bash
- PowerShell
- Batch
# Linux/macOS
PLAYWRIGHT_BROWSERS_PATH=$HOME/pw-browsers python playwright_script.py
$env:PLAYWRIGHT_BROWSERS_PATH="$env:USERPROFILE\pw-browsers"
python playwright_script.py
set PLAYWRIGHT_BROWSERS_PATH=%USERPROFILE%\pw-browsers
python playwright_script.py
Playwright 会跟踪需要这些浏览器的包,并在您将 Playwright 更新到较新版本时对它们进行垃圾回收。
开发人员可以通过在 .bashrc 中导出 PLAYWRIGHT_BROWSERS_PATH=$HOME/pw-browsers 来选择加入此模式。
Install behind a firewall or a proxy
默认情况下,Playwright 从 Microsoft CDN 下载浏览器。
有时公司会维护一个内部代理,阻止直接访问公共资源。在这种情况下,可以将 Playwright 配置为通过代理服务器下载浏览器。
- Bash
- PowerShell
- Batch
pip install playwright
HTTPS_PROXY=https://192.0.2.1 playwright install
$env:HTTPS_PROXY="https://192.0.2.1"
pip install playwright
playwright install
set HTTPS_PROXY=https://192.0.2.1
pip install playwright
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"
Download from artifact repository
默认情况下,Playwright 从 Microsoft CDN 下载浏览器。
有时公司会维护一个内部工件存储库来托管浏览器二进制文件。在这种情况下,可以将 Playwright 配置为使用 PLAYWRIGHT_DOWNLOAD_HOST 环境变量从自定义位置下载。
- Bash
- PowerShell
- Batch
pip install playwright
PLAYWRIGHT_DOWNLOAD_HOST=192.0.2.1 playwright install
$env:PLAYWRIGHT_DOWNLOAD_HOST="192.0.2.1"
pip install playwright
playwright install
set PLAYWRIGHT_DOWNLOAD_HOST=192.0.2.1
pip install playwright
playwright install
还可以使用 PLAYWRIGHT_CHROMIUM_DOWNLOAD_HOST、PLAYWRIGHT_FIREFOX_DOWNLOAD_HOST 和 PLAYWRIGHT_WEBKIT_DOWNLOAD_HOST 环境变量使用每个浏览器的下载主机,这些变量优先于 PLAYWRIGHT_DOWNLOAD_HOST。
- Bash
- PowerShell
- Batch
pip install playwright
PLAYWRIGHT_FIREFOX_DOWNLOAD_HOST=203.0.113.3 PLAYWRIGHT_DOWNLOAD_HOST=192.0.2.1 playwright install
$env:PLAYWRIGHT_FIREFOX_DOWNLOAD_HOST="203.0.113.3"
$env:PLAYWRIGHT_DOWNLOAD_HOST="192.0.2.1"
pip install playwright
playwright install
set PLAYWRIGHT_FIREFOX_DOWNLOAD_HOST=203.0.113.3
set PLAYWRIGHT_DOWNLOAD_HOST=192.0.2.1
pip install playwright
playwright install
Skip browser downloads
在某些情况下,希望完全避免浏览器下载,因为浏览器二进制文件是单独管理的。
这可以通过在安装前设置 PLAYWRIGHT_SKIP_BROWSER_DOWNLOAD 变量来完成。
- Bash
- PowerShell
- Batch
pip install playwright
PLAYWRIGHT_SKIP_BROWSER_DOWNLOAD=1 python -m playwright install
$env:PLAYWRIGHT_SKIP_BROWSER_DOWNLOAD=1
pip install playwright
playwright install
set PLAYWRIGHT_SKIP_BROWSER_DOWNLOAD=1
pip install playwright
playwright install
Download single browser binary
Playwright 默认下载 Chromium、Firefox 和 WebKit 浏览器。要安装特定浏览器,请在安装期间将其作为参数传递。
pip install playwright
playwright install firefox
Stale browser removal
Playwright 会跟踪使用其浏览器的客户端。当不再有客户端需要特定版本的浏览器时,该版本将从系统中删除。这样,您可以安全地使用不同版本的 Playwright 实例,同时不会为不再使用的浏览器浪费磁盘空间。
要选择退出未使用的浏览器移除,您可以设置 PLAYWRIGHT_SKIP_BROWSER_GC=1 环境变量。