使用Selenium时,JsonWireProtocol机制和W3C Living文档中的新标准之间的区别

5
我想知道在使用Selenium进行UI测试时,JsonWireProtocol机制(状态:已废弃)和W3C 2019年12月31日的Living Document机制(新标准)之间的区别。我知道Selenium已经使用了以下内容: 当我们创建一个驱动程序的新实例(C#)时:
using OpenQA.Selenium;
using OpenQA.Selenium.Chrome;
IWebDriver driver = new ChromeDriver();

我们实际上向Selenium服务器发出了POST /session请求,然后通过JsonWireProtocol进行操作,例如:POST /session/:sessionId/element/:id/click, 我们可以查找并点击特定的元素,或者使用其他请求执行一些其他操作...
那么现在有什么新东西吗?有人可以详细解释一下新标准吗?如果有人能做到这一点,我会非常高兴! WebDriver W3C Living Document 31 December 2019 JsonWireProtocol
1个回答

6

WebDriver Wire Protocol

最初的WebDriver Wire Protocol草案是一个提议,所有与浏览器或RemoteWebDriver服务器通信的WebDriver实现都应使用共同的协议。该协议定义了使用JSON over HTTP的RESTful web service

根据最初的建议和实践,一些JSON对象如下:

  • WebElement JSON Object:WebElement的JSON表示形式,用于在网络上传输。此对象将具有以下属性:

WebElement JSON Object

  • 功能 JSON 对象:并非所有服务器实现都支持 WebDriver 的每个功能。因此,客户端和服务器在描述会话支持哪些功能时,应使用下面列出的属性的 JSON 对象。
  • 期望的能力:由客户端发送的 Capabilities JSON 对象,描述服务器应该拥有的新会话的能力。任何省略的键都暗示相应的能力是无关紧要的。更多信息请参阅 DesiredCapabilities
  • 实际能力:由服务器返回的 Capabilities JSON 对象,描述会话实际支持的功能。任何省略的键都暗示相应的能力不受支持。
  • 等等

WebDriver W3C 规范

随着WebDriver W3C规范的引入,以下标准被定义:

  • WebDriver 远程端必须提供符合 HTTP 标准的传输协议,其中端点映射到不同的命令。
  • 虽然此标准仅定义了远程端协议,但对于本地端的实现没有任何要求。
  • 本地端只需要与远程端的协议兼容,对其公开的用户界面 API 没有任何要求。

命令

WebDriver协议被组织成了一系列命令。每个HTTP请求都代表一个单独的命令,并且每个命令会产生一个HTTP响应。在响应一个命令时,远程端会运行一系列称为远程端步骤的动作。它们提供了远程端接收特定命令时所采取的动作序列。


端点

下面的端点表列出了每个端点节点的方法和URI模板以及它们在ChromeDriver中的当前支持

chromeScreenshot

结语

协议和Json Wire协议有什么区别?


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接