Skip to main content

浏览器

每个版本的 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 通道。以下是如何选择使用现有浏览器的方法:

# Can be "msedge", "chrome-beta", "msedge-beta", "msedge-dev", etc.
browser = 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 时,要求它将浏览器下载到特定位置:

pip install playwright
PLAYWRIGHT_BROWSERS_PATH=$HOME/pw-browsers python -m playwright install

运行 Playwright 脚本时,要求它在共享位置搜索浏览器。

# Linux/macOS
PLAYWRIGHT_BROWSERS_PATH=$HOME/pw-browsers python playwright_script.py

Playwright 会跟踪需要这些浏览器的包,并在您将 Playwright 更新到较新版本时对它们进行垃圾回收。

note

开发人员可以通过在 .bashrc 中导出 PLAYWRIGHT_BROWSERS_PATH=$HOME/pw-browsers 来选择加入此模式。

Install behind a firewall or a proxy

默认情况下,Playwright 从 Microsoft CDN 下载浏览器。

有时公司会维护一个内部代理,阻止直接访问公共资源。在这种情况下,可以将 Playwright 配置为通过代理服务器下载浏览器。

pip install playwright
HTTPS_PROXY=https://192.0.2.1 playwright install

如果代理的请求被自定义的不受信任的证书颁发机构 (CA) 拦截,并且在下载浏览器时产生 Error: self signed certificate in certificate chain,则必须在安装浏览器之前通过 NODE_EXTRA_CA_CERTS 环境变量设置自定义根证书:

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

Download from artifact repository

默认情况下,Playwright 从 Microsoft CDN 下载浏览器。

有时公司会维护一个内部工件存储库来托管浏览器二进制文件。在这种情况下,可以将 Playwright 配置为使用 PLAYWRIGHT_DOWNLOAD_HOST 环境变量从自定义位置下载。

pip install playwright
PLAYWRIGHT_DOWNLOAD_HOST=192.0.2.1 playwright install

还可以使用 PLAYWRIGHT_CHROMIUM_DOWNLOAD_HOSTPLAYWRIGHT_FIREFOX_DOWNLOAD_HOSTPLAYWRIGHT_WEBKIT_DOWNLOAD_HOST 环境变量使用每个浏览器的下载主机,这些变量优先于 PLAYWRIGHT_DOWNLOAD_HOST

pip install playwright
PLAYWRIGHT_FIREFOX_DOWNLOAD_HOST=203.0.113.3 PLAYWRIGHT_DOWNLOAD_HOST=192.0.2.1 playwright install

Skip browser downloads

在某些情况下,希望完全避免浏览器下载,因为浏览器二进制文件是单独管理的。

这可以通过在安装前设置 PLAYWRIGHT_SKIP_BROWSER_DOWNLOAD 变量来完成。

pip install playwright
PLAYWRIGHT_SKIP_BROWSER_DOWNLOAD=1 python -m 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 环境变量。