WebDriver Bidi 的 TypeScript 支持
随着 WebdriverIO v8 的发布,我们引入了直接连接WebDriver Bidi 协议的功能。这允许用户在协议开发过程中以一种基本的方式访问其新功能。如今,随着每个浏览器版本的发布,将启用更多功能,因此 WebdriverIO 需要加强其集成,并使这些功能更容易供用户使用。
随着 WebdriverIO v8.11 的发布,我们添加了新的 WebDriver Bidi 接口,并使其类型安全🎉
WebDriver Bidi 规范的接口是通过简洁数据定义语言(简称 CDDL)定义的。它描述了可以发送到驱动程序的有效负载以及预期的响应。在过去的一个月里,我一直在开发一个 CDDL 解析器,以帮助 W3C 的浏览器测试和工具工作组验证规范中定义的 CDDL,并帮助 WebDriver 生态系统采用该协议。
我创建了两个 NPM 包,希望它们能为此做出贡献
- cddl:一个读取 CDDL 并将其解析为 AST 以及验证内容的包
- cddl2ts:一个允许您将 CDDL 文件转换为 TypeScript 接口的包,您可以将其用于其他 TypeScript 项目
通过 WebdriverIO 存储库中的一些最新更改,我们现在借助这些包生成了一个完美类型的 WebDriver Bidi 接口,例如:
我们还更新了协议文档,以包含新的 Bidi 命令,帮助用户使用Promise与协议交互。随着浏览器开始支持更多 Bidi 功能,WebdriverIO 将开始在新的协议上运行更多自动化,确保您的测试使用最新和最强大的跨浏览器自动化标准。以下是一些即将在即将发布的浏览器版本中提供的功能
- 添加预加载脚本:这将是一个非常有价值的命令,可以帮助 WebdriverIO 模拟 Web API 并注入用于自检的脚本
- 网络拦截:这将使 WebdriverIO 的网络请求模拟 API 跨浏览器兼容
- HTTP 身份验证:能够加载受用户凭据保护的网页
请注意,即使 WebdriverIO 将提供最新的 WebDriver Bidi 功能,但这并不意味着这些功能已在浏览器中实现并发布。每个浏览器供应商都有不同的优先级和可用资源来添加这些新功能,并且虽然团队取得了很大进展,但需要更多时间才能将协议中指定的所有内容都添加到稳定的浏览器版本中。不过,您可以放心,WebdriverIO 将始终为您提供一个类型化接口,以便您在准备好后使用它们。
此外,我正在制定一项提案,以扩展 WebdriverIO 接口,并在已知的 browser
、element
和 mock
对象旁边包含一个 page
对象,以简化访问与特定浏览上下文相关的命令和事件。敬请期待相关信息!
最后,我要感谢 Mozilla 和 Google 浏览器团队的出色合作和努力,他们发布了这个新标准,这将使全球的开发人员能够在未来发布高质量的 Web 应用程序。