Difference between JsonWireProtocol mechanisms and the new standards in W3C Living Document when using Selenium

强颜欢笑 提交于 2021-02-19 05:34:21

问题


I'm wondering what are the differences between the mechanisms in JsonWireProtocol (Status: OBSOLETE) and W3C Living Document from 31 December 2019 (the new standard) when using Selenium for UI tests. I know that Selenium have used the following: When we make a new instance of a driver (C#):

using OpenQA.Selenium;
using OpenQA.Selenium.Chrome;
IWebDriver driver = new ChromeDriver();

we actually make a POST /session request to the selenium server. After that via JsonWireProtocol and, in example:

POST /session/:sessionId/element/:id/click, we can find and click on particular element, or make some other actions with the other requests...

So what are the new things nowadays? Can someone explain the new standard?! I will be very happy if someone do that in-depth!

WebDriver W3C Living Document 31 December 2019

JsonWireProtocol


回答1:


The WebDriver Wire Protocol

The initial WebDriver Wire Protocol draft was a proposal that, all implementations of WebDriver that would communicate with the browser, or a RemoteWebDriver server shall use a common wire protocol. This wire protocol defined a RESTful web service using JSON over HTTP.

As per the initial proposal and practice some of the JSON Objects were as follows:

  • WebElement JSON Object: The JSON representation of a WebElement for transmission over the wire. This object will have the following properties:

  • Capabilities JSON Object: Not all server implementations will support every WebDriver feature. Therefore, the client and server should use JSON objects with the properties listed below when describing which features a session supports.
  • Desired Capabilities: A Capabilities JSON Object sent by the client describing the capabilities a new session created by the server should possess. Any omitted keys implicitly indicate the corresponding capability is irrelevant. More at DesiredCapabilities.
  • Actual Capabilities: A Capabilities JSON Object returned by the server describing what features a session actually supports. Any omitted keys implicitly indicate the corresponding capability is not supported.
  • etc

WebDriver W3C Specification

With the introduction of WebDriver W3C Specification the following standards were defined:

  • WebDriver remote ends must provide an HTTP compliant wire protocol where the endpoints map to different commands.
  • Though this standard only defines the remote end protocol, it puts no demands to how local ends should be implemented.
  • Local ends are only expected to be compatible to the extent that they can speak the remote end’s protocol; no requirements are made upon their exposed user-facing API.

Commands

The WebDriver protocol is organised into commands. Each HTTP request with a method and template defined in this specification represents a single command, and therefore each command produces a single HTTP response. In response to a command, a remote end will run a series of actions known as remote end steps. These provide the sequences of actions that a remote end takes when it receives a particular command.


Endpoints

The table of endpoints below lists the method and URI template for each endpoint node command and their current support in ChromeDriver.

Outro

What is the difference between Protocol and Json Wire Protocol



来源:https://stackoverflow.com/questions/60185756/difference-between-jsonwireprotocol-mechanisms-and-the-new-standards-in-w3c-livi

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!