Chrome for Testing:可靠下载,实现浏览器自动化

Mathias Bynens
Mathias Bynens

今天,我们非常高兴地宣布推出 Chrome for Testing,这是一个专门针对 Web 应用测试和自动化用例的全新 Chrome 版本。本文介绍了 Chrome 团队认为需要采用 Chrome 测试的原因,并举例说明了 Chrome for Testing 可能让开发者受益的具体示例。

背景

不论是手动还是自动进行,浏览器测试都是打造优质网络体验的重要一环。同时,众所周知,设置适当的浏览器测试环境并非易事,以至于一直 有人报告这是 Web 开发者的首要痛点。今天,我们宣布一项新功能,希望能缓解这种痛苦。

自动更新:对用户和开发者来说都很麻烦

Chrome 最引人注目的功能之一就是其自动更新功能。用户很高兴得知他们运行的是最新且安全的浏览器版本,包括现代 Web 平台功能、浏览器功能和问题修复。

但是,作为运行一系列端到端测试的开发者,您可能会有完全不同的观点:

  • 您希望在反复运行测试后获得一致且可重现的结果,但如果浏览器可执行文件或二进制文件决定在两次运行之间自行更新,就可能会出现这样的情况。
  • 您希望固定一个特定的浏览器版本,并将该版本号检查到源代码库中,以便从该时间点签出旧的提交和分支并针对浏览器二进制文件重新运行测试。

使用自动更新的浏览器二进制文件无法实现上述任何操作。因此,建议您不要使用常规安装的 Chrome 进行自动测试。这就是对普通浏览器用户有益与对开发者进行自动化测试有益的根本不一致。

带版本号的浏览器二进制文件

除了自动更新之外,您可能还发现很难找到特定版本的 Chrome 二进制文件。Google 刻意不提供版本化的 Chrome 下载内容,因为用户不应该关注版本号,而始终应该尽快更新到最新版本。这对用户很有帮助,但对于需要在旧版 Chrome 中重现 bug 报告的开发者来说,这会带来麻烦。

此问题的更具体的示例是,您想要使用 ChromeDriver 进行浏览器自动化。您不仅需要以某种方式下载 Chrome 二进制文件,还需要相应版本的 ChromeDriver 二进制文件,以确保这两个二进制文件兼容。

由于不存在可解决这些问题的好方法,我们知道许多开发者会改为下载 Chromium(而非 Chrome)二进制文件,不过这种方法存在一些缺陷。首先,这些 Chromium 二进制文件并非在所有平台上都能可靠地提供。其次,它们是独立于 Chrome 发布流程进行构建和发布的,因此不可能将其版本对应回面向用户的真实 Chrome 版本。第三,Chromium 不同于 Chrome。

解决方案:Chrome for Testing

Chrome for Testing 是 Chrome 的专用版本,旨在解决这类问题。它不自动更新,而是集成到 Chrome 发布流程中。尽可能接近常规 Chrome 的版本化二进制文件,而不会对测试用例产生负面影响。

为了打造 Chrome for Testing,我们对 Chromium 和 Chrome 代码库进行了更改,并设置了基础架构,以便构建这些二进制文件,并将这些二进制文件上传到公开可用的存储分区,从而与所有渠道(稳定版、Beta 版、开发版和 Canary 版)的 Chrome 发布流程保持同步。

Chrome for Testing 的基础架构为 Chrome 带来了更多有趣的机会。例如,通过将 ChromeDriver 发布流程集成到 Chrome for Testing 基础架构中,我们可以完全消除我们之前提到的寻找匹配的 Chrome 和 ChromeDriver 二进制文件的困难。除了解决这一面向用户的痛点之外,这还可以使 ChromeDriver 版本与 Chrome 的版本保持一致,并免去手动 ChromeDriver 发布流程的麻烦。

如何获取 Chrome for Testing 二进制文件?

要下载适用于您平台的 Chrome for Testing 二进制文件,最简单的方法就是使用我们的 @puppeteer/browsers 命令行工具(可通过 npm 下载)。下面是一些示例:

# Download the latest available Chrome for Testing binary corresponding to the Stable channel.
npx @puppeteer/browsers install chrome@stable

# Download a specific Chrome for Testing version.
npx @puppeteer/browsers install chrome@116.0.5793.0

# Download the latest available ChromeDriver version corresponding to the Canary channel.
npx @puppeteer/browsers install chromedriver@canary

# Download a specific ChromeDriver version.
npx @puppeteer/browsers install chromedriver@116.0.5793.0

如果您希望构建自己的自动化脚本来下载这些二进制文件,那么这里就能满足您的要求。我们会根据 Chrome 发布版本(稳定版、Beta 版、开发者版、Canary 版),提供 JSON API 端点,其中包含最新可用版本。要快速了解最新状态,请查看 Chrome for Testing 可用性信息中心