你的翻译如下:
关于 协议 和 JsonWireProtocol,你说得很正确。值得一提的是,在这个阶段,所有与浏览器或 RemoteWebDriver 服务器通信的 WebDriver 实现都应该使用一个共同的传输协议。这个传输协议定义了一个使用 JSON over HTTP 的 RESTful web service。
JSON Wire Protocol 是一个抽象规范,它描述了自动化行为(如点击、输入等)如何映射到 Selenium 或 Appium 或 HTTP 请求和响应。该协议假定 WebDriver API 已经被 "展平",但期望客户端实现采用更面向对象的方法,就像现有的 Java API 所示。传输协议是由 "命令" 和 "响应" 的请求/响应对实现的。
JSON(JavaScript对象表示)是客户端和服务器之间进行数据交换的轻量级格式。应用程序使用JSON对象在Web世界中相互发送和接收数据。JSON数据结构是行业标准,可用于发送和接收键值对数据。有些人认为它是XML的一个很好的替代品。我们可以将JSON文件保存为.json扩展名。
JSON是什么样子的?
一个简单的JSON文件如下所示,有许多在线编辑器可用于编辑和验证JSON结构。
{
"Student":{
"FirstName":"Pawan",
"LastName":"Garia",
"IdNumber":"12345",
"City" : "New Delhi",
"EmailID" : "email@gmail.com" }
}
为了实现客户端-服务器架构,从而获得以下好处。
- 您可以使用任何编程语言编写测试。
- 您可以在云服务(如SauceLabs、BrowserStack或Selenium Grid设置)上执行或运行测试。
- 您不仅局限于在本地计算机上运行测试。
- 可以创建不同的驱动程序(FirefoxDriver、ChromeDriver)用于浏览器,并通过使用相同的标准进行分离实现。
因此,客户端-服务器实现需要事先一组标准规范,以便服务器和客户端在请求和响应中相互同步,就像彼此之间的通信语言。因此,我们需要一些常见的规范来解决这种要求,解决方案就是HTTP。
为什么HTTP是解决方案?
HTTP是Web的标准,可以成为规范的良好基础。每种编程语言都有优秀的HTTP库,可用于创建客户端和服务器进行请求和响应调用。
JSON Wire协议如何与HTTP配合工作?
HTTP请求和响应通常由GET和POST请求组成,这超出了本讨论的范围。
当前状态
从 Selenium 的角度来看,JSON Wire Protocol 已经过时,现在采用的是 WebDriver W3C Living Document 实现。
WebDriver通信
WebDriver协议按照命令进行组织。规范中定义的每个具有方法和模板的HTTP请求都代表一个单独的命令,因此每个命令会产生一个HTTP响应。在响应命令时,远程端将运行一系列被称为远程端步骤的操作。这些步骤提供了当远程端接收到特定命令时所采取的操作序列。
命令处理
远程端是一个HTTP服务器,通过TCP套接字读取客户端请求并写入响应。在规范中,通信被建模为特定本地端和远程端之间的数据传输,远程端可以向其中写入字节并读取字节。如何建立连接以及连接的确切细节是一个更大的话题,超出了此问题的范围。建立连接后,远程端必须从连接中读取字节,直到可以从数据构造完整的HTTP请求。如果无法构造完整的HTTP请求,则远程端必须关闭连接、返回状态代码为500的HTTP响应或返回错误代码为未知错误的错误。
结语
在使用Selenium时,JsonWireProtocol机制与W3C Living Document中的新标准之间的区别