跳到主要内容

浏览器

简介

每个 Playwright 版本都需要特定版本的浏览器二进制文件才能运行。 你需要使用 Playwright CLI 来安装这些浏览器。

每次发布时,Playwright 都会更新其支持的浏览器版本,以便最新的 Playwright 始终支持最新的浏览器。 这意味着每次更新 Playwright 时,你可能需要重新运行 install CLI 命令。

安装浏览器

Playwright 可以安装受支持的浏览器。 运行不带参数的命令将安装默认浏览器。

pwsh bin/Debug/netX/playwright.ps1 install

你还可以通过提供参数来安装特定的浏览器

pwsh bin/Debug/netX/playwright.ps1 install webkit

查看所有受支持的浏览器

pwsh bin/Debug/netX/playwright.ps1 install --help

通过 API 安装浏览器

可以通过 .NET API 运行命令行工具命令

var exitCode = Microsoft.Playwright.Program.Main(new[] {"install"});
if (exitCode != 0)
{
throw new Exception($"Playwright exited with code {exitCode}");
}

安装系统依赖项

系统依赖项可以自动安装。 这对于 CI 环境很有用。

pwsh bin/Debug/netX/playwright.ps1 install-deps

你还可以通过传递单个浏览器作为参数来安装其依赖项

pwsh bin/Debug/netX/playwright.ps1 install-deps chromium

也可以将 install-depsinstall 结合使用,以便使用单个命令安装浏览器和操作系统依赖项。

pwsh bin/Debug/netX/playwright.ps1 install --with-deps chromium

有关正式支持的操作系统,请参阅系统要求

配置浏览器

Playwright 可以在 Chromium、WebKit 和 Firefox 浏览器以及品牌浏览器(如 Google Chrome 和 Microsoft Edge)上运行测试。 它还可以在模拟的平板电脑和移动设备上运行。 请参阅设备参数注册表,以获取精选的桌面、平板电脑和移动设备的完整列表。

在不同的浏览器上运行测试

在特定浏览器上运行测试

dotnet test -- Playwright.BrowserName=webkit

要在多个浏览器或配置上运行测试,你需要多次调用 dotnet test 命令。 你可以指定 BROWSER 环境变量,也可以通过 runsettings 文件设置 Playwright.BrowserName

dotnet test --settings:chromium.runsettings
dotnet test --settings:firefox.runsettings
dotnet test --settings:webkit.runsettings
<?xml version="1.0" encoding="utf-8"?>
<RunSettings>
<Playwright>
<BrowserName>chromium</BrowserName>
</Playwright>
</RunSettings>

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 构建版本,并为 headless 模式提供单独的 chromium headless shell

如果你仅在 headless shell 中运行测试(即,指定 channel 选项),例如在 CI 中,则可以通过在安装期间传递 --only-shell 来避免下载完整的 Chromium 浏览器。

# only running tests headlessly
pwsh bin/Debug/netX/playwright.ps1 install --with-deps --only-shell

Chromium:新的 headless 模式

你可以通过使用 'chromium' channel 来选择新的 headless 模式。 正如 官方 Chrome 文档所述

另一方面,新的 Headless 是真正的 Chrome 浏览器,因此更真实、更可靠,并提供更多功能。 这使其更适合高精度端到端 Web 应用测试或浏览器扩展测试。

有关详细信息,请参阅 issue #33566

<?xml version="1.0" encoding="utf-8"?>
<RunSettings>
<Playwright>
<BrowserName>chromium</BrowserName>
<LaunchOptions>
<Channel>chromium</Channel>
</LaunchOptions>
</Playwright>
</RunSettings>
dotnet test -- Playwright.BrowserName=chromium Playwright.LaunchOptions.Channel=chromium

使用新的 headless 模式,你可以通过使用 --no-shell 选项在浏览器安装期间跳过下载 headless shell

# only running tests headlessly
pwsh bin/Debug/netX/playwright.ps1 install --with-deps --no-shell

Google Chrome & Microsoft Edge

虽然 Playwright 可以下载并使用最新的 Chromium 构建版本,但它可以针对计算机上可用的品牌 Google Chrome 和 Microsoft Edge 浏览器运行(请注意,Playwright 默认情况下不安装它们)。 特别是,当前的 Playwright 版本将支持这些浏览器的 Stable 和 Beta 渠道。

可用的渠道有 chromemsedgechrome-betamsedge-betachrome-devmsedge-devchrome-canarymsedge-canary

警告

某些企业浏览器策略可能会影响 Playwright 启动和控制 Google Chrome 和 Microsoft Edge 的能力。 在具有浏览器策略的环境中运行超出了 Playwright 项目的范围。

警告

Google Chrome 和 Microsoft Edge 已切换到 新的 headless 模式 实现,该实现更接近常规有头模式。 这与 Playwright 在以 headless 模式运行时默认使用的 chromium headless shell 不同,因此在某些情况下会产生不同的行为。 有关详细信息,请参阅 issue #33566

<?xml version="1.0" encoding="utf-8"?>
<RunSettings>
<Playwright>
<BrowserName>chromium</BrowserName>
<LaunchOptions>
<Channel>msedge</Channel>
</LaunchOptions>
</Playwright>
</RunSettings>
dotnet test -- Playwright.BrowserName=chromium Playwright.LaunchOptions.Channel=msedge

安装 Google Chrome 和 Microsoft Edge

如果你的计算机上没有 Google Chrome 或 Microsoft Edge,你可以使用 Playwright 命令行工具安装它们

pwsh bin/Debug/netX/playwright.ps1 install msedge
警告

Google Chrome 或 Microsoft Edge 安装将安装在操作系统的默认全局位置,从而覆盖当前的浏览器安装。

使用 --help 选项运行以查看可以安装的浏览器的完整列表。

何时使用 Google Chrome 和 Microsoft Edge,何时不使用?

默认值

大多数情况下,使用默认的 Playwright 配置和最新的 Chromium 是一个好主意。 由于 Playwright 领先于浏览器的 Stable 渠道,因此可以让你安心,即将到来的 Google Chrome 或 Microsoft Edge 版本不会破坏你的站点。 你可以尽早发现中断并在官方 Chrome 更新之前有足够的时间修复它。

回归测试

话虽如此,测试策略通常要求针对当前公开可用的浏览器执行回归测试。 在这种情况下,你可以选择 stable 渠道之一,"chrome""msedge"

媒体编解码器

使用官方二进制文件进行测试的另一个原因是测试与媒体编解码器相关的功能。 由于各种许可考虑和协议,Chromium 没有 Google Chrome 或 Microsoft Edge 捆绑的所有编解码器。 如果你的站点依赖于这种编解码器(这种情况很少见),你也会希望使用官方渠道。

企业策略

Google Chrome 和 Microsoft Edge 遵守企业策略,其中包括对功能、网络代理、强制扩展的限制,这些限制会妨碍测试。 因此,如果你是使用此类策略的组织的一部分,则最容易使用捆绑的 Chromium 进行本地测试,你仍然可以选择通常不受此类限制的机器人上的 stable 渠道。

Firefox

Playwright 的 Firefox 版本与最新的 Firefox Stable 构建版本匹配。 Playwright 不适用于品牌版本的 Firefox,因为它依赖于补丁。

请注意,某些功能的可用性在很大程度上取决于底层平台,并且可能因操作系统而异。 例如,可用的媒体编解码器在 Linux、macOS 和 Windows 之间差异很大。

WebKit

Playwright 的 WebKit 派生自最新的 WebKit main 分支源代码,通常在这些更新合并到 Apple Safari 和其他基于 WebKit 的浏览器之前。 这为应对潜在的浏览器更新问题提供了充足的提前期。 Playwright 不适用于品牌版本的 Safari,因为它依赖于补丁。 相反,你可以使用最新的 WebKit 构建版本进行测试。

请注意,某些功能的可用性在很大程度上取决于底层平台,并且可能因操作系统而异。 例如,可用的媒体编解码器在 Linux、macOS 和 Windows 之间差异很大。 虽然在 Linux CI 上运行 WebKit 通常是最经济实惠的选择,但为了获得最接近 Safari 的体验,你应该在 mac 上运行 WebKit,例如,如果你进行视频播放。

在防火墙或代理后面安装

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

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

HTTPS_PROXY=https://192.0.2.1 pwsh bin/Debug/netX/playwright.ps1 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 pwsh bin/Debug/netX/playwright.ps1 install

如果你正在安装依赖项并且需要在 Linux 上使用代理,请确保以 root 用户身份运行命令。 否则,Playwright 将尝试成为 root 用户,并且不会将 HTTPS_PROXY 等环境变量传递给 linux 包管理器。

sudo HTTPS_PROXY=https://192.0.2.1 pwsh bin/Debug/netX/playwright.ps1 install-deps

从工件仓库下载

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

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

PLAYWRIGHT_DOWNLOAD_HOST=http://192.0.2.1 pwsh bin/Debug/netX/playwright.ps1 install

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

PLAYWRIGHT_FIREFOX_DOWNLOAD_HOST=http://203.0.113.3 PLAYWRIGHT_DOWNLOAD_HOST=http://192.0.2.1 pwsh bin/Debug/netX/playwright.ps1 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 时,要求其将浏览器下载到特定位置

PLAYWRIGHT_BROWSERS_PATH=$HOME/pw-browsers pwsh bin/Debug/netX/playwright.ps1 install

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

PLAYWRIGHT_BROWSERS_PATH=$HOME/pw-browsers dotnet test

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

注意

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

删除过时的浏览器

Playwright 会跟踪使用其浏览器的客户端。 当没有更多客户端需要特定版本的浏览器时,该版本将从系统中删除。 这样,你可以安全地使用不同版本的 Playwright 实例,同时又不会浪费不再使用的浏览器的磁盘空间。

要选择退出未使用的浏览器删除,你可以设置 PLAYWRIGHT_SKIP_BROWSER_GC=1 环境变量。

卸载浏览器

这将删除当前 Playwright 安装的浏览器(chromium、firefox、webkit)

pwsh bin/Debug/netX/playwright.ps1 uninstall

要同时删除其他 Playwright 安装的浏览器,请传递 --all 标志

pwsh bin/Debug/netX/playwright.ps1 uninstall --all