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

Mathias Bynens
Mathias Bynens

今天,我们很高兴地宣布推出 Chrome for Testing,这是一种新的 Chrome 变种,专门针对 Web 应用测试和自动化用例。本文介绍了 Chrome 团队为何认为有必要推出此版本,并提供了具体示例,说明 Chrome for Testing 如何让开发者受益。

背景

无论是手动还是自动进行浏览器测试,都是创建优质 Web 体验的重要组成部分。与此同时,设置合适的浏览器测试环境非常困难,以至于它一直被认为是 Web 开发者的主要痛点。今天,我们将宣布一项变更,希望能缓解其中的一些痛点。

自动更新:对用户来说很棒,但对开发者来说很痛苦

Chrome 最显著的功能之一是能够自动更新。用户 很高兴知道自己始终运行的是最新且安全的浏览器版本,其中包括最新的 Web 平台功能、浏览器功能和 bug 修复。

不过,作为运行一系列端到端测试的开发者 ,您可能会有完全不同的看法:

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

对于自动更新的浏览器二进制文件,这些操作都无法实现。因此,您可能不希望将常规 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,而不会对测试用例产生负面影响。

为了创建 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

如果您更喜欢构建自己的自动化脚本来下载这些二进制文件,我们也能满足您的需求。我们提供 JSON API 端点,其中包含每个 Chrome 发布渠道(稳定版、Beta 版、开发者版、Canary 版)的最新可用版本。如需快速了解最新状态,请参阅 Chrome for Testing 可用性信息中心