WebDriver BiDi - 跨浏览器自动化的未来

Maksim Sadym
Maksim Sadym

早前的文章中,我们研究了现有的自动化协议(即 WebDriver“Classic”)和 Chrome DevTools Protocol (CDP),以及它们各自的优势和限制。

WebDriver BiDi 是浏览器自动化的未来!它是正在开发中的一种新的标准浏览器自动化协议,旨在结合 WebDriver“Classic”(经典)和 CDP 的精华,WebDriver BiDi 承诺实现双向通信,默认情况下会快速实现快速通信,而且也支持低级控制。

WebDriver BiDi
WebDriver“传统版” Chrome 开发者工具协议 (CDP)
最佳跨浏览器支持 快速的双向消息传递
W3C 标准 提供低级控制
专为测试而构建

WebDriver BiDi 的愿景是,支持您使用自己喜欢的任何工具编写测试,并在任何浏览器或驱动程序中自动执行这些测试,从而为您提供充分的灵活性。

WebDriver BiDi 背后的愿景。
WebDriver BiDi 背后的愿景

标准化

WebDriver BiDi 工作组由各种各样的浏览器供应商、开源浏览器自动化项目以及提供浏览器自动化解决方案的公司组成。这种合作可确保浏览器自动化拥有光明的未来。

WebDriver BiDi 工作组
WebDriver BiDi 工作组

相关工作主要在此 GitHub 代码库中完成。所有主要浏览器供应商每月都会召开会议,报告实际进度,并讨论可争议和未知的细节。跨公司工作小组会确保所有利益相关方的决策保持一致。

制定和实现新协议绝非易事。它需要各供应商通力协作。过程包括以下步骤:

  • 规范:用于收集提案反馈的评论请求 (RFC) 流程。
  • 验证:可跨平台运行的一系列测试,作为所有实现的可信来源。
  • 实现:浏览器根据规范实现相关协议,并通过验证测试。

挑战

在本部分中,我们将深入探讨实现 WebDriver BiDi 所面临的挑战,因为 WebDriver BiDi 力求在兼容性、易用性和可实现性之间取得平衡。

超越 CDP:实现跨浏览器兼容性

CDP 及其特定于 Chrome 和开发者工具的元素无法直接复制到 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 开发者工具协议 (CDP)?

不会。基于 Chromium 的浏览器会继续使用 CDP 进行调试,而 WebDriver BiDi 则是新规范,旨在通过更符合人体工程学的 API 来满足测试需求。

由于 Puppeteer 使用的是 CDP,这是否意味着 Puppeteer 会被弃用?

不能。不过,WebDriver BiDi 使 Puppeteer 成为一款跨浏览器的自动化工具。

您是否有公开的路线图?

有,请访问我们的 GitHub 路线图。