跳至主要内容

协议命令

WebdriverIO 是一个自动化框架,它依赖于各种自动化协议来控制远程代理,例如浏览器的、移动设备的或电视的。根据远程设备的不同,不同的协议会发挥作用。这些命令根据远程服务器(例如浏览器驱动程序)的会话信息分配给浏览器元素对象。

在内部,WebdriverIO 几乎使用所有与远程代理交互的协议命令。但是,分配给浏览器元素对象的附加命令简化了 WebdriverIO 的使用,例如,使用协议命令获取元素的文本将如下所示

const searchInput = await browser.findElement('css selector', '#lst-ib')
await client.getElementText(searchInput['element-6066-11e4-a52e-4f735466cecf'])

使用浏览器元素对象的便捷命令,这可以简化为

$('#lst-ib').getText()

以下部分解释每个单独的协议。

WebDriver 协议

WebDriver协议是用于自动化浏览器的 Web 标准。与其他一些 E2E 工具相反,它保证可以在用户使用的实际浏览器(例如 Firefox、Safari 和 Chrome 以及基于 Chromium 的浏览器,如 Edge)上进行自动化,而不仅仅是在浏览器引擎(例如 WebKit)上进行自动化,因为浏览器引擎之间存在很大差异。

与使用诸如Chrome DevTools之类的调试协议相比,使用 WebDriver 协议的优势在于,您有一组特定的命令,这些命令允许以相同的方式跨所有浏览器与浏览器交互,从而降低了出现不稳定性的可能性。此外,此协议提供了通过使用云供应商(例如Sauce LabsBrowserStack其他)实现大规模可扩展性的能力。

WebDriver Bidi 协议

WebDriver Bidi协议是该协议的第二代,目前正在由大多数浏览器供应商开发。与它的前身相比,该协议支持框架和远程设备之间的双向通信(因此称为“Bidi”)。此外,它还引入了其他基本要素,用于更好地进行浏览器自省,以便更好地在浏览器中自动化现代 Web 应用程序。

鉴于此协议目前正在开发中,随着时间的推移,将添加更多功能并得到浏览器的支持。如果您使用 WebdriverIO 的便捷命令,则对您而言没有任何变化。WebdriverIO 将在这些新协议功能可用并得到浏览器支持后立即使用它们。

Appium

Appium项目提供了自动化移动设备、桌面设备和所有其他类型的物联网设备的功能。虽然 WebDriver 专注于浏览器和 Web,但 Appium 的愿景是使用相同的方法,但适用于任何任意设备。除了 WebDriver 定义的命令之外,它还有一些特殊的命令,这些命令通常特定于正在自动化的远程设备。对于移动测试场景,当您希望为 Android 和 iOS 应用程序编写和运行相同的测试时,这是理想的选择。

根据 Appium文档,它的设计是为了满足移动自动化需求,其理念概述如下四个原则

  • 您无需重新编译应用程序或以任何方式修改它即可对其进行自动化。
  • 您不应局限于特定的语言或框架来编写和运行测试。
  • 移动自动化框架在自动化 API 方面不应重新发明轮子。
  • 移动自动化框架在精神和实践以及名称上都应该是开源的!

Chromium

Chromium 协议在 WebDriver 协议之上提供了一组超级命令,只有在通过ChromedriverEdgedriver运行自动化会话时才支持。

Firefox

Firefox 协议在 WebDriver 协议之上提供了一组超级命令,只有在通过Geckodriver运行自动化会话时才支持。

Sauce Labs

Sauce Labs协议在 WebDriver 协议之上提供了一组超级命令,只有在使用 Sauce Labs 云运行自动化会话时才支持。

Selenium 独立版

Selenium 独立版协议在 WebDriver 协议之上提供了一组超级命令,只有在使用 Selenium Grid 运行自动化会话时才支持。

JSON 线路协议

JSON 线路协议是 WebDriver 协议的前身,现在已弃用。虽然某些命令可能仍然在某些环境中受支持,但不建议使用任何其命令。

移动 JSON 线路协议

移动 JSON 线路协议是在 JSON 线路协议之上的一组移动命令的超集。鉴于此协议已弃用,移动 JSON 线路协议也已弃用。Appium 可能仍然支持其中的一些命令,但不建议使用它们。

欢迎!我怎样才能帮到您?

WebdriverIO AI Copilot