自动浏览器测试对于构建稳健、高质量的 Web 应用至关重要。无论是运行端到端持续集成 (CI) 套件、跨浏览器版本执行回归测试,还是自动执行浏览器互动,Chrome 都提供了一套专用的工具和执行模式,专为开发者和测试自动化工程师而设计。
本概览介绍了 Chrome 自动化和测试生态系统中的核心产品(Chrome for Testing、ChromeDriver、Puppeteer 和 Chrome 无头模式),并说明了如何将它们结合使用,以实现可靠且可重现的测试工作流。
Chrome for Testing
Chrome for Testing 是一种专用的 Chrome 版本,专门针对 Web 应用测试和自动化用例。
在运行端到端测试套件或持续集成 (CI) 流水线时,您通常需要在重复测试运行中获得一致且可重现的结果。Chrome for Testing 不依赖于标准浏览器安装,而是让您能够下载并固定特定 Chrome 版本以用于测试环境。
主要特性
- 按需下载版本: 访问特定的 Chrome 二进制文件(带版本号),以便您始终针对所选的确切版本进行测试。
- 跨渠道的配对二进制文件: 对于所有渠道(稳定版 、Beta 版 、开发者版 和 Canary 版 )中的每个 Chrome 版本,Chrome for Testing 都提供与相关 ChromeDriver 二进制文件配对的匹配 Chrome 二进制文件,以及旧版 Chrome 无头 shell (
chrome-headless-shell),供仍在自动化测试中使用该 shell 的用户使用。 - 轻松实现下载自动化: 可以使用
@puppeteer/browsers命令行实用程序轻松下载二进制文件,也可以通过可用性信息中心查询二进制文件。
了解详情
ChromeDriver
ChromeDriver 是一个开源独立服务器,用于实现 W3C WebDriver 标准和双向 WebDriver BiDi 协议。它充当基于 WebDriver 的测试框架(例如 Selenium、WebDriverIO 和 Nightwatch)与 Chrome 浏览器之间的桥梁。
主要特性
- 支持 W3C WebDriver 和 WebDriver BiDi: 支持经典 WebDriver 自动化命令和通过 WebDriver BiDi 进行的实时双向通信,以便快速进行事件监听、网络监控和日志拦截。
- 与 Chrome for Testing 同步发布: ChromeDriver 版本直接集成到 Chrome for Testing 基础架构中。对于每个 Chrome for Testing 版本,系统都会同时发布匹配的 ChromeDriver 版本,从而避免版本不匹配问题。
了解详情
Puppeteer
Puppeteer 是 Google 开发的 JavaScript 库,用于提供高级 API,以便通过 Chrome DevTools 协议 (CDP) 或 WebDriver BiDi 控制 Chrome。
主要特性
- 零设置自动化: Puppeteer 默认会自动下载兼容的 Chrome for Testing 二进制文件,从而实现开箱即用的浏览器自动化。
- 完全控制 Chrome: 轻松捕获屏幕截图、生成 PDF、自动提交表单、拦截网络请求,以及在有头模式或无头模式下执行界面测试。
了解详情
Chrome 无头模式
借助 Chrome 无头模式,您可以在无人值守的环境中运行 Chrome,而无需任何可见的用户界面。通过在命令行中传递 --headless 标志,Chrome 可以在服务器环境、容器和 CI/CD 流水线中干净地运行。
主要特性
- 统一的浏览器引擎: 现代无头模式 (
--headless) 与有头 Chrome 共享完全相同的浏览器实现。 - 丰富的自动化和调试功能: 支持屏幕截图捕获、PDF 生成、远程调试和虚拟屏幕配置。
了解详情
示例:结合使用这些产品
在典型的自动化测试或持续集成 (CI) 工作流中,这些产品协同工作,提供可重现的无人值守测试环境:
- 浏览器二进制文件 (Chrome for Testing): 使用特定的、固定版本的 Chrome for Testing 二进制文件,以便您的测试结果在多次运行中具有确定性。
- 执行模式(Chrome 无头模式): 在 无头模式 (
--headless) 下运行该二进制文件,以便测试在服务器、容器或 CI 流水线中干净地执行,而无需图形显示。 - 自动化驱动程序(Puppeteer 或 ChromeDriver): 使用自动化库(例如 Puppeteer )或通过 WebDriver BiDi 连接的任何其他测试框架来驱动浏览器。
Puppeteer 会自动连接这些组件。安装后,它会下载兼容的 Chrome for Testing 二进制文件,并默认在 无头模式 下启动该二进制文件。
使用 W3C WebDriver 框架(例如 Selenium 或 WebdriverIO)时,您可以自动下载一对匹配的 Chrome for Testing 和 ChromeDriver 二进制文件,并传递 --headless 标志以在没有界面的情况下运行。