【问题标题】:What is the difference between WebDriver and DevTool protocolWebDriver 和 DevTool 协议有什么区别
【发布时间】:2018-11-29 01:11:39
【问题描述】:

众所周知,WebDriver 协议是为自动化测试目的而设计的。但各大浏览器也提供 DevTool 协议。在某些情况下,与 WebDriver 相比,DevTool 协议可以实现更强大的交互和操作。

我的问题是为什么有两种不同的协议,这两种协议之间的主要区别是什么?有没有项目开发的选择经验可以分享?

提前致谢!

参考:

【问题讨论】:

    标签: selenium selenium-webdriver browser webdriver google-chrome-devtools


    【解决方案1】:

    网络驱动程序

    WebDriver 为我们提供了一个精心设计的面向对象的 API,它可以为通过动态网页创建的现代高级 Web 应用程序提供更好的支持。简而言之,WebDriver 是一个远程控制接口,使我们能够自省和控制用户代理。它为我们提供了一个平台和语言中性线协议,以及作为进程外程序远程指示Web 浏览器行为的一种方式。

    WebDriver 规范

    WebDriver SpecificationBrowser Testing and Tools Working Group 作为编辑草稿发布。编辑草案并不意味着 W3C 成员的认可,并且可能随时被其他文档更新、替换或废止。

    DevTools 协议

    Developer Tools Protocol 被各种浏览器JavaScript 引擎调试工具 用于:

    • 使用一套诊断工具帮助 Web 开发人员,这些工具适用于各种目标。
    • 满足对特定目标devtools 协议适配器 的需求,并简化工具用户和工具开发人员的体验。
    • 提供一个供应商中立的平台,以促进不同协议实施和感兴趣的客户之间的协作和相互达成共识。
    • 减少根据用户故事构建任何进一步兼容的协议实施所需的工程投资。

    一些具有内置调试协议的浏览器引擎浏览器是:

    一些公开通用协议的适配器:

    您可以在此处找到RemoteDebug - Protocol Adaptors 中的适配器列表


    1.请注意,FirefoxDevTools ProtocolWork In Progress

    2.请注意,EdgeDevTools ProtocolWork In Progress

    【讨论】:

    • 感谢您的解释。还有一个问题,开发一个web自动化测试框架,哪个协议更好?
    • @Erxin 正如我所提到的,WebDriver 是一个规范,如果使用 Selenium,则必须遵守该规范,其中 DevTools 协议 通过 Chrome DevTools ProtocolWebKit/webkit 等实现,您应该始终根据您的 Test Specification 选择一个。实现几乎相同。
    【解决方案2】:

    WebDriver 协议和 DevTools 协议之间的主要区别在于,WebDriver 协议需要一个像浏览器驱动程序这样的中间人(例如:chrome-driver),它是一个位于自动化脚本和浏览器之间的服务器,支持浏览器控制,但如果DevTools 协议,自动化脚本可以直接与在调试模式下运行的浏览器对话,使无头自动化非常简单。

    Chrome驱动内部使用DevTools协议来控制浏览器,所以如果我们使用WebDriver协议,它又会使用Devtools协议来控制浏览器。

    如果跨浏览器测试对于新的测试工具来说很重要,那么 DevTools 协议现在可能不适合,因为还没有标准,而且大部分都在进行中。否则,DevTools 协议将是一个不错的选择,因为它提供了更多控制,例如拦截请求标头、模拟网络等,并使无头自动化方式更容易。

    【讨论】:

      猜你喜欢
      • 2023-04-10
      • 1970-01-01
      • 2011-08-26
      • 2017-04-20
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-08-12
      相关资源
      最近更新 更多