你说得都很正确Protocol and JsonWire协议。在这一点上值得一提的是,早期的所有实现网络驱动程序与浏览器或 RemoteWebDriver 服务器通信的设备应使用通用有线协议。该有线协议定义了一个RESTful Web 服务 using JSON通过 HTTP。
JSON 有线协议是一个抽象规范,说明自动化行为(例如单击或键入或您实际想要对自动化脚本执行的任何操作)如何映射到 selenium 或 appium 或 HTTP 请求和响应。该协议将假定 WebDriver API 已“扁平化”,但预期客户端实现将采用更加面向对象的方法,如现有 Java API 中所演示的那样。有线协议在“命令”和“响应”的请求/响应对中实现。
What is JSON 有线协议?
JSON(JavaScript 对象表示法)是一种用于客户端和服务器之间数据交换的轻量级格式。应用程序使用 JSON 对象在网络世界中相互发送和接收数据。 JSON 数据结构是行业标准,可用于发送和接收数据键值对。有些人说这是一个非常好的选择XML。我们可以将 JSON 文件保存为 .json 扩展名。
JSON 是什么样子的?
一个简单的 json 文件如下所示,有很多在线编辑可用于编辑和验证 JSON 结构。
{
"Student":{
"FirstName":"Pawan",
"LastName":"Garia",
"IdNumber":"12345",
"City" : "New Delhi",
"EmailID" : "[email protected]" }
}
Why JSON 有线协议首先被使用?
实现客户端-服务器架构可以给我们带来以下好处。
- 您可以使用任何编程语言编写测试。
- 您可以在 SauceLabs、BrowserStack 或 Selenium Grid 设置等云服务上执行或运行测试。
- 您不必只在本地计算机上运行测试。
- 可以为浏览器创建不同的驱动程序(FirefoxDriver、ChromeDriver),并使用相同的标准单独实现。
因此,客户端-服务器实现需要预先制定一组标准规范,以便服务器和客户端在请求和响应的到来和发生方面应该彼此同步。这就像一种相互交流的语言。所以我们需要一些通用的规范来解决这种需求,而解决方案就是HTTP。
为什么 HTTP 是解决方案?
HTTP 是 Web 标准,可以作为规范的良好基础。每一个编程语言有一个很好的 HTTP 库,可用于创建请求和响应调用的客户端和服务器。
JSON Wire 协议如何与 HTTP 配合使用?
HTTP 请求和响应通常由 GET 和 POST 请求组成,这超出了本讨论的范围。
当前状态
From Selenium看法,JSON 有线协议现在已经过时了WebDriver W3C 生活文档是新的实现。
网络驱动通讯
WebDriver 协议被组织成命令。每个HTTP请求使用规范中定义的方法和模板表示单个command因此每个命令都会产生一个HTTP响应。为了响应命令,远端将运行一系列称为远程结束步骤。这些提供了远程端在收到特定命令时采取的操作序列。
命令处理
远程端是一个 HTTP 服务器,通常通过 TCP 套接字读取来自客户端的请求并写入响应。在规范中,通信被建模为特定之间的数据传输本地端 and 远端具有远程端可以写入字节和读取字节的连接。这种连接如何工作以及如何建立的确切细节是一个更大的话题,超出了这个问题的范围。建立连接后,远程端必须从连接中读取字节,直到可以从数据构造完整的 HTTP 请求。如果无法构造完整的 HTTP 请求,则远程端必须关闭连接,返回状态码为 500 的 HTTP 响应,或者返回错误码为未知的错误。
Outro
使用 Selenium 时 JsonWireProtocol 机制与 W3C Living Document 中的新标准之间的差异