发布信息

WebDriver BiDi:新一代浏览器自动化协议,提升 Web 应用测试效率

作者:软荐小编      2024-10-17 09:11:56     191

任何测试 Web 应用程序的人都应该了解一种名为 WebDriver BiDi 的新浏览器自动化协议。这个新协议是原始 WebDriver 标准的演变,它融合了其他各种自动化工具的一些优点,最值得注意的是,增加了双向通信。

BrowserStack(一家浏览器测试公司)的开源负责人 David Burns 表示:“这是一个全新的协议,它吸收了一段时间以来出现的所有最佳想法,并试图通过 W3C 对其进行标准化。” WebDriver BiDi 工作组)以及 W3C 浏览器测试和工具工作组的主席,该工作组负责 WebDriver 和 WebDriver BiDi 规范。

根据其 W3C 定义,最初的 WebDriver 协议或 WebDriver Classic 是一个“能够对用户代理进行自省和控制的远程控制接口”。本质上,它提供了一种远程控制 Web 浏览器行为的方法,以便可以在其中测试应用程序。

然而,该协议仅提供单向通信,这意味着客户端向服务器发送请求,而服务器只能回复该一个请求,BrowserStack 团队负责人兼 WebDriver BiDi 的关键代码提交者 Puja Jagani 解释道。项目。

“服务器无法发起与客户端的通信,只能做出响应。因此,如果浏览器中发生了感兴趣的事情,除非客户端提出要求,否则它无法与客户端进行通信,”Jagani 解释道。

WebDriver BiDi 中的 BiDi 代表双向通信,这意味着它实际上允许浏览器中的事件流回控制软件。

根据 Jagani 的说法,由于浏览器是事件驱动的,因此当发生有趣的事情时,浏览器能够将事件共享回客户端会很有帮助。

例如,使用这个新协议,用户可以订阅在浏览器发送网络请求或从浏览器发送网络请求时创建的事件,这使他们能够监视(或修改)所有传出请求和传入响应。

实际操作的一个示例涉及指向云中生产数据库的应用程序。测试该应用程序时,WebDriver BiDi 可用于修改传出请求以指向测试数据库,以便生产数据库不会被测试数据淹没。

“这只有通过双向通信才能实现。如果没有 W3C BiDi 协议,这是不可能的,”Jagani 说。

CDP 与 WebDriver

Chrome DevTools Protocol (CDP) 和 WebDriver Classic 历来经常被比较,因为它们都是低级工具 - 在浏览器外部执行远程命令的工具,例如打开多个选项卡或模拟设备模式,高级开发人员关系 Jecelyn Yeen Chrome 工程师和 Google 软件工程师 Maksim Sadym 在博客文章中解释道。

相比之下,高级工具是那些在浏览器中执行命令的工具。其中的示例包括 Puppeteer、Cypress 和 TestCafe。

CDP 确实支持双向通信,但它仅限于测试目的,因为它仅适用于基于 Chromium 的浏览器,例如 Google Chrome,而不适用于 Firefox 或 Safari。 Yeen 和 Sadym 表示,“WebDriver BiDi 旨在将 WebDriver ‘Classic’ 和 CDP 的最佳方面结合起来。”

然而,BrowserStack 的 Burns 强调,这个新协议并不是要取代 CDP,而是完全是一个新的测试和自动化协议。 “CDP 始终会出现在 Chromium 浏览器上,”他说。

它已经有浏览器支持

CDP 的创建者 Google 大力参与 WebDriver BiDi 的开发和支持,Mozilla 也是如此。 “我们很高兴 Mozilla 和 Google 来帮助我们实现标准化,现在每个人都可以从中受益,”伯恩斯说。他补充说,苹果公司还没有完全做到这一点,目前还不清楚何时在基于 WebKit 的浏览器中提供对 WebDriver BiDi 的支持。

“有时标准的发展速度可能非常缓慢,其中一部分是有充分理由的。它涉及创建协作点并达成共识——有时达成共识可能非常困难,尤其是谷歌、Mozilla 和苹果,他们对于如何让事情变得更好有自己的想法,因此实现起来可能非常非常缓慢,”伯恩斯解释道。

测试自动化工具和测试公司也开始支持它

除了需要支持它的浏览器之外,另一个难题是获得测试自动化工具和测试提供商。幸运的是,自动化工具 Selenium 和 WebDriverIO,以及测试公司 BrowserStack、SauceLabs 和 LambdaTest 都是 WebDriver BiDi 工作组的一部分。

WebdriverIO 和 Selenium 已经对新协议提供了一些支持,BrowserStack 也支持它。 Selenium 本身也在将其整个实现从 WebDriver 更新为 WebDriver BiDi。 Burns 解释说,将经典版本的 WebDriver 改造为 BiDi 是该过程的最后一个主要部分,预计将在明年内完成。

“这是一个志愿者驱动的项目,所以当每个人的带宽和时间都匹配时,就会发生这种情况,所以它会像突然或突突的工作一样完成,对吗?但我认为这就是开源开发的一般情况,”Jagani 说,他也是 Selenium 技术领导委员会的成员。

她指出,到 Selenium 5(当前版本是 4.24),目标是至少完成高级 API,其中涵盖了许多用例,例如让用户能够收听控制台日志并能够为他们的网站进行基本身份验证,仅举几个例子。

一旦 Selenium 5 发布,下一个目标将是开始将命令从 WebDriver Classic 逐一转换为 WebDriver BiDi。 “希望到 Selenium 6,我们就只有 BiDi 了,”她说。她确实继续解释说,这是一个漫长的过程,有许多外部变量。浏览器仍在实现它的过程中,一旦 BiDi 进入浏览器的稳定版本,Selenium 就可以开始实现它了。之后,还有一段时间用户需要使用它并提供反馈,以便 Selenium 可以确保其实现具有弹性。

Jagani 表示,一旦 Selenium 切换到 BiDi,用户体验应该保持不变,不会有太大的突破性变化。

“这就是 Selenium 试图做的事情——即使从 Selenium 3 到 4——我们也试图确保它是无缝集成,并且破坏性变化最小,”她说。 “Selenium 在尽可能向后兼容方面非常重要,或者至少确保我们根据需要弃用一些东西,这样你就知道我们将删除它并给出足够的警告。使用 WebDriver Classic 的用户的体验将仍然是一样,因为最终将是相同的 API,只是在幕后使用 BiDi。”

为了利用 BiDi 带来的新高级功能,将提供更新的 API,这些 API 与用户已经熟悉的 API 类似。

相关内容 查看全部