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

2023-11-25

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

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

为什么后者被称为Json 有线协议?


你说得都很正确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 中的新标准之间的差异

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

协议和Json Wire协议有什么区别 的相关文章

随机推荐

  • 获取当前请求URL的scheme

    在 Ruby Rack 中 我能够获取当前请求 URL 的方案scheme request 然而 在围棋中 http Request URL Scheme返回一个空字符串 package main import fmt log net ht
  • 为什么 Ansible 显示“错误!任务中未检测到任何操作”错误?

    Ansible 显示错误 错误 任务中未检测到任何操作 这通常表示模块名称拼写错误或模块路径不正确 怎么了 准确的文字记录是 ERROR no action detected in task This often indicates a m
  • 如何使 findpeak 函数检测负峰值而不是正峰值

    我想知道我该怎么做findpeak函数检测负峰而不是正峰 它检测下图所示的红色峰 我需要检测蓝色峰 有什么想法吗 非常感谢 如前所述 你必须使用 data 这是一个例子 x 0 1e 3 5 pi t 0 length x 1 1e 3 y
  • 支持多界面,但主屏幕只有单一界面,在 iOS8 + iPhone 中不工作

    我有如下所示的视图结构 HomeView Support only portrait mode V View1 Support all orientation V View2 Support all orientation 问题 当我com
  • 首先使用代码在实体框架中建模关系问题

    我试图首先在实体框架中学习代码 但在建模关系时遇到问题 它是一个基本的人力资源数据库 因此有两个实体 员工和部门 员工属于一个部门 该部门有一名团队管理员和一名经理 他们实际上都是员工 我尝试使用以下方法对此进行建模 EMPLOYEE pu
  • BackgroundWorker & Timer,只读取日志文件的新行?

    我的应用程序写入一个日志文件 当前使用log4net 我想设置一个计时器和一个后台工作人员来读取日志文件并将其内容打印到我的表单中的某些控件中 同时写入日志文件 我无法使用文件系统观察者类因为似乎被破坏了 有时事件 改变 会触发 有时则不会
  • 删除 CR 行终止符

    首先我想说我已经读过这个帖子但是我仍然有问题CR line terminators 有一个文件叫build test sh 我编辑于leafpad它可以直接显示在Vim cp moonbox llvm 2 9 lib Transforms
  • 如何在B类中定义A类,在A类中定义B类?

    我有两种类型 一种类型 A 一种类型 B 问题类型 A 包含类型 B 类型 B 包含类型 A 这样的事情是行不通的 type typeA record test1 typeB end type typeB record test2 type
  • 使用哪款 Android 手机进行开发...? [关闭]

    就目前情况而言 这个问题不太适合我们的问答形式 我们希望答案得到事实 参考资料或专业知识的支持 但这个问题可能会引发辩论 争论 民意调查或扩展讨论 如果您觉得这个问题可以改进并可能重新开放 访问帮助中心以获得指导 我计划将一些游戏从 iPh
  • 免费的 UML 工具,非常适合 .NET [关闭]

    就目前情况而言 这个问题不太适合我们的问答形式 我们希望答案得到事实 参考资料或专业知识的支持 但这个问题可能会引发辩论 争论 民意调查或扩展讨论 如果您觉得这个问题可以改进并可能重新开放 访问帮助中心以获得指导 谁能推荐一款您曾经使用过并
  • 错误:TypeError:$(...).dialog 不是函数

    我在获取对话框作为基本功能时遇到问题 这是我的 jQuery 源导入 Html
  • 如何使用硬件视频缩放器?

    现代显卡具有硬件视频缩放器 例如作为 AMD Avivo NVIDIA PureVideo 或 Intel ClearVideo 的一部分 例如 AMD 的Avivo 白皮书 says 图像输出缩放器支持最多 6 个垂直滤波器抽头及以上 至
  • 基于区域设置的python csv列表分隔符

    如何使用Python检测用户机器中的列表分隔符 需要在用户计算机上创建 CSV 文件 并且必须自动检测列表分隔符 以便 Excel 可以读取 CSV 文件 我发现 Excel 从 区域选项 gt 数字 gt 列表分隔符 中获取 CSV 元素
  • d3 重置范围后保留比例/平移

    我有一个
  • 如何将组件引用传递给 onPress 回调?

    我确实使用 onPress 处理程序 渲染了以下类型的列表 我意识到 onPress 处理程序是无用的 因为我无法获取按下种族的参考 我收到 ref 未定义错误 var races Engine possibleRaces function
  • 来自不受信任的 UID 的呼叫

    当我在 Android Studio 中运行 UIAutomator 时 有时会出现崩溃 W ActivityManager Crash of app com example testsample running instrumentati
  • 替代 NSData 已弃用的 dataWithContentsOfMappedFile

    So id dataWithContentsOfMappedFile NSString 路径自 iOS 5 0 以来显然已被弃用 在我看来 我应该避免使用它 但是我应该使用什么来代替呢 我使用 mmap 来创建内存映射文件 它适用于 iOS
  • 如何以编程方式注册 JSF 托管 bean?

    我想以编程方式 从 Servlet init 内 将托管 Bean 类注册 添加到应用程序范围中 我如何使用 JSF 1 2 做到这一点 对于所有范围的托管 bean 不太可能从您的应用程序中以编程方式执行此操作 BalusC 已经指出了如
  • 在 PHP 上启用 SOAP

    我想在我的 PHP5 Centos Apache 服务器上启用 SOAP 我可以完全访问服务器 我的 php ini 文件包含以下内容 当我查看 phpinfo 时 它没有引用 SOAP 有什么建议么 谢谢 soap Enables or
  • 协议和Json Wire协议有什么区别

    Protocol 定义通过网络交换数据的方法的标准 如果浏览器想要与服务器通信 它必须创建 HTTP 请求并将该 HTTP 请求发送到服务器以传达其资源和选项请求 服务器接收请求并处理它并执行必要的操作并创建 HTTP 响应以发送到浏览器