在上文中,我们探讨了现有的自动化协议(即 WebDriver“传统版”和 Chrome 开发者工具协议 [CDP]),以及它们各自的优势和限制。
欢迎使用 WebDriver BiDi,它是浏览器自动化的未来!这是一种目前正在开发的新标准浏览器自动化协议,旨在结合 WebDriver“传统版”和 CDP 的优势。WebDriver BiDi 可实现双向通信,默认情况下速度很快,并且内置低级控制功能。
WebDriver BiDi | |
---|---|
WebDriver“传统版” | Chrome 开发者工具协议 (CDP) |
最佳跨浏览器支持 | 快速的双向消息传递 |
W3C 标准 | 提供低级控制 |
专为测试而打造 |
WebDriver BiDi 的愿景是让您能够使用自己喜欢的任何工具编写测试,并在任何浏览器或驱动程序中自动执行这些测试,从而为您提供充分的灵活性。

标准化
WebDriver BiDi 工作组由一群多元化的浏览器供应商、开源浏览器自动化项目以及提供浏览器自动化解决方案的公司组成。此次合作有助于确保浏览器自动化技术的光明未来。

大部分工作都在此 GitHub 代码库中完成。我们每月都会召集所有主要浏览器供应商召开会议,报告实际进展并讨论有争议和未知的具体问题。跨公司工作组会确保决策符合所有利益相关方的利益。
制定和实施新协议并非易事。这需要各个供应商通力合作,齐心协力。过程包括以下步骤:
挑战
在本部分中,我们将深入探讨实现 WebDriver BiDi 的挑战,因为它旨在在兼容性、易用性和可实现性之间取得平衡。
超越 CDP 克隆:拥抱跨浏览器兼容性
由于 CDP 包含 Chrome 和 DevTools 专用元素,因此无法直接在 WebDriver BiDi 规范中复制。其他浏览器无法按原样实现 CDP,因此仅记录如何实现 CDP 的规范是没有意义的。
确保较短的延迟时间
WebDriver BiDi 必须设计为在不牺牲性能的情况下处理高延迟。在 CDP 中,延迟时间较短,因为客户端和服务器几乎总是在同一台实体机器中运行,但在 WebDriver BiDi 中并非如此。因此,WebDriver BiDi 必须尽可能减少客户端和服务器之间所需的往返次数。
在 BiDi 中优先考虑工效学
虽然开发者不应从头开始构建 WebDriver BiDi 客户端,但务必要避免使协议过于复杂。如果 BiDi 过于复杂,不仅难以实现,而且难以使用,会妨碍其采用和使用。
确保可实现 BiDi
在考虑各种浏览器的限制的情况下,WebDriver BiDi 必须能够切实实现。例如,保留 BiDi 曾经向客户端公开的所有 JavaScript 对象可能会导致内存泄漏,而不保留任何对象会妨碍调试和与网页的 JavaScript 互动。必须找到一个平衡点,在不影响性能的情况下实现有效的浏览器自动化。
克服挑战
在本部分中,我们将讨论解决 WebDriver BiDi 实现难题所采用的策略。
快速原型设计
解决可实现性问题对顺利实现 BiDi 至关重要。为了加快规范和测试的进度,我们采用了使用 NodeJS 的快速原型设计方法。这不仅让我们能够尝试不同的解决方案,还能促进 Web 平台测试的开发。
在设计时考虑性能
此设计决策是出于性能考虑,因为在某些情况下,WebDriver BiDi 的延迟时间较长。例如,从浏览器检索对象 ID 和值时,WebDriver BiDi 只需要一次往返,而 CDP 需要两次往返。这是因为 WebDriver BiDi 可以在单个响应中返回 ID 和值(结果不应可 JSON 序列化),而 CDP 必须分别返回它们。
重点介绍 Web 平台测试 (WPT)
Web 平台测试在 BiDi 的工作中发挥着重要作用。WPT 目前涵盖 WebDriver“传统版”和 WebDriver BiDi,可作为所有实现的可靠参考。这些测试旨在跨各种实现运行并通过,以确保一致的跨浏览器协议执行,这对于 WebDriver BiDi 的成功至关重要。在信息中心查看最新的 WPT 结果。
计划是什么?目前进展如何?
查看 WebDriver BiDi 路线图,了解该项目的发展方向。该路线图正在不断完善和发展。
如需了解各浏览器的实现状态,请参阅最新的 Web 平台测试,因为它是可信来源。
及时了解项目里程碑,以监控项目进度。
了解 2023 年取得的成就,及时了解最新动态!
支持 WebDriver BiDi:您可以提供哪些帮助
您是否对 WebDriver BiDi 赋予浏览器自动化功能的未来充满期待?您可以通过以下方式表达支持:
- 成为早期测试人员和采用者,帮助塑造 WebDriver BiDi 的未来。
- 让全世界都知道!使用 #WebDriverBiDi 标签在社交媒体上分享该项目。
- 寻求支持。提交功能请求,或向您常用的工具咨询其采用 WebDriverBiDi 的计划。
- 参与 RFC,针对 API 提供反馈。
常见问题
WebDriver BiDi 是否会取代 Chrome DevTools Protocol (CDP)?
不会。基于 Chromium 的浏览器将继续出于调试目的使用 CDP,而 WebDriver BiDi 是新规范,旨在通过更符合人体工学的 API 满足测试需求。
由于 Puppeteer 使用的是 CDP,这是否意味着 Puppeteer 将被弃用?
不可以。不过,WebDriver BiDi 可让 Puppeteer 成为一款跨浏览器自动化工具。
您是否有公开的路线图?
是的,请访问 GitHub 上的路线图。