json - Protocol和Json Wire Protocol有什么区别

标签 json http selenium-webdriver protocols webdriver-w3c-spec

协议(protocol):一种标准,用于定义通过网络交换数据的方法。
如果浏览器要与服务器通信,则必须创建一个HTTP请求并将该HTTP请求发送到服务器以传达其资源和选项请求。服务器接收请求并对其进行处理,并进行必要的操作,并创建HTTP响应以发送到浏览器。浏览器在创建HTTP请求时必须遵循HTTP规范。服务器在创建HTTP响应时还必须遵循HTTP规范。这是浏览器和服务器之间以标准方式进行通信的方式,从而通过遵循HTTP协议(protocol)来避免冲突。

Json有线协议(protocol):客户端具有必须发送到服务器的对象。客户端将此对象转换为JSON对象,并将其发送到服务器。服务器解析JSON对象,并将其转换回对象以供使用。服务器将响应对象转换为JSON对象,然后将其发送回客户端。然后,客户端将JSON对象转换为要使用的对象。

为什么将后者称为?Json Wire Protocol

最佳答案

您对协议(protocol)和JsonWireProtocol都非常正确。在这一点上,值得一提的是,与浏览器或RemoteWebDriver服务器通信的WebDriver的所有早期实现都应使用通用的有线协议(protocol)。该有线协议(protocol)使用HTTP上的RESTful web service定义了JSON

JSON Wire Protocol是关于如何将自动化行为(例如单击或键入或您实际上想要对自动化脚本执行的操作)映射到 Selenium 或appium或HTTP请求和响应的抽象规范。该协议(protocol)将假定WebDriver API已被“扁平化”,但是期望客户端实现将采用更面向对象的方法,如现有Java API所示。有线协议(protocol)在“命令”和“响应”的请求/响应对中实现。

什么是JSON Wire protocol

JSON(JavaScript对象表示法)是一种轻量级格式,用于客户端和服务器之间的数据交换。应用程序使用JSON对象在网络世界之间相互发送和接收数据。 JSON数据结构是行业标准,可用于作为Key & Value pair发送和接收数据。有人说它是XML的非常好的替代品。我们可以将JSON文件另存为.json扩展名。

JSON看起来如何?

一个简单的json文件如下所示,并且有许多online editors可用于编辑和验证JSON结构。

{
 "Student":{
   "FirstName":"Pawan",
   "LastName":"Garia",
   "IdNumber":"12345",
   "City" : "New Delhi",
   "EmailID" : "email@gmail.com" }
}

为什么首先使用JSON Wire Protocol

实现可以为我们带来以下好处的客户端-服务器体系结构。
  • 您可以使用任何编程语言编写测试。
  • 您可以在云服务如SauceLabs,BrowserStack或Selenium Grid设置上执行或运行测试。
  • 您不必仅在本地计算机上运行测试。
  • 可使用相同的标准为浏览器创建不同的驱动程序(FirefoxDriver,ChromeDriver)并单独实现。

  • 因此,客户端-服务器的实现需要事先准备一组标准的规范,以便服务器和客户端应根据请求和响应的来龙去脉相互保持同步。就像是彼此交流的语言。因此,我们需要一些通用的规范来解决这种要求,而解决方案就是HTTP。

    为什么使用HTTP是解决方案?

    HTTP是Web的标准,可以作为该规范的良好基础。每个programming language都有一个很好的HTTP库,可用于为请求和响应调用创建客户端和服务器。

    JSON Wire协议(protocol)如何与HTTP一起使用?

    HTTP请求和响应通常由GET和POST请求组成,因此不在本讨论范围之内。

    当前状态

    从Selenium的角度来看, JSON Wire Protocol 现在已过时,而WebDriver W3C Living Document是新的实现。

    WebDriver通讯

    WebDriver协议(protocol)被组织为命令。每个在规范中定义的方法和模板的HTTP request代表单个命令,因此每个命令都产生一个HTTP response。响应命令,remote end将运行一系列称为远端步骤的操作。这些提供了远端接收到特定命令时采取的一系列 Action 。

    命令处理

    远端是一个HTTP服务器,通常从TCP套接字读取来自客户端的请求并写入响应。在本说明书中,通信被建模为特定local endremote end之间的数据传输,并具有远程端可以向其写入字节和读取字节的连接。关于此连接如何工作以及如何建立的确切细节是一个更大的话题,不在此问题的范围之内。建立连接后,远程端必须从连接中读取字节,直到可以从数据中构造出完整的HTTP请求为止。如果无法构造完整的HTTP请求,则远程端必须关闭连接,返回状态码为500的HTTP响应,或返回错误码为未知错误的错误。

    奥托罗

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

    关于json - Protocol和Json Wire Protocol有什么区别,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54382080/

    相关文章:

    Selenium webdriver 断言点击元素有效

    json - Perl Json 编码有 float 的引号

    javascript - 如何序列化数组?

    php - 如何发布到返回文本的 URL 编码 API?

    php - Apache 2 多 View 和图像/* 请求的 406 错误

    ruby - 通过 API v1.5 访问整个 netflix 目录

    javascript - 在 Selenium javascript 中创建警报消息

    javascript - 使用 Google Feed API 的 jQuery 自动 RSS Feed 列表不起作用

    ios - 先缓冲数据再加载-iOS

    selenium - 有没有关于首选项的 egde webdriver 文档?