根据Selenium文档,webdriver客户端和浏览器之间的交互是通过JSON Wire
Protocol完成的
。基本上,用python,ruby,java等语言编写的客户端将JSON消息发送到Web浏览器,并且Web浏览器也以JSON进行响应。
有没有一种方法可以在运行selenium测试时查看/捕获/记录这些JSON消息?
例如(在Python中):
from selenium import webdriver
driver = webdriver.Chrome()
driver.get('http://google.com')
driver.close()
我想查看在实例化驱动程序(在本例中为Chrome)时,在python selenium
webdriver客户端和浏览器之间发生的JSON消息:webdriver.Chrome()
,在获取页面时:driver.get('http://google.com')
和在关闭页面时:driver.close()
。
仅供参考,在#SFSE:精简远程WebDriver教程中,它是通过捕获运行脚本的
本地 计算机与 远程 Selenium服务器之间的网络流量来完成的。
我将问题标记为Python
具体,但实际上对任何指针都会感到满意。
当您使用Chrome时,您可以指导chromedriver
将驱动Chrome
的实例记录比该logging
软件包可用的更多信息。该信息包括发送到浏览器的命令及其获得的响应。这是一个例子:
from selenium import webdriver
driver = webdriver.Chrome(service_log_path="/tmp/log")
driver.get("http://www.google.com")
driver.find_element_by_css_selector("input")
driver.quit()
上面的代码会将日志输出到/tmp/log
。日志中与find_element_...
调用相对应的部分如下所示:
[2.389][INFO]: COMMAND FindElement {
"sessionId": "b6707ee92a3261e1dc33a53514490663",
"using": "css selector",
"value": "input"
}
[2.389][INFO]: Waiting for pending navigations...
[2.389][INFO]: Done waiting for pending navigations
[2.398][INFO]: Waiting for pending navigations...
[2.398][INFO]: Done waiting for pending navigations
[2.398][INFO]: RESPONSE FindElement {
"ELEMENT": "0.3367185448296368-1"
}
据我所知,命令和响应忠实地代表了客户端和服务器之间发生的事情。根据我在这些日志中看到的内容,我已经向Selenium项目提交了错误报告和修复程序。
1. Homebase over TCP 1.1. 通讯协议 1.2. 连接过程 1.3. 指令 1.3.1. method:list 1.3.2. method:execute 1.3.3. method:command 1.1. 通讯协议 通讯基于 JSON-RPC 2.0,使用 TCP 短连接 成功返回 jsonrpc {string} 必须为"2.0" id {string} 必须与请求对
日志与监控 Mesos 自身提供了强大的日志和监控功能,某些应用框架也提供了针对框架中任务的监控能力。通过这些接口,用户可以实时获知集群的各种状态。 日志配置 日志文件默认在 /var/log/mesos 目录下,根据日志等级带有不同后缀。 用户可以通过日志来调试使用中碰到的问题。 一般的,推荐使用 --log_dir 选项来指定日志存放路径,并通过日志分析引擎来进行监控。 监控 Mesos 提供
系统查看 查看 CentOS 版本号:cat /etc/redhat-release CPU 的基本信息查看 Demo CPU 型号:Intel® Xeon® Processor E5-2620 v2(15M Cache, 2.10 GHz) 该 CPU 显示的数据中有一项这个要注意:Intel® Hyper-Threading Technology 是 Yes。表示该 CPU 支持超线程 cat
超时控制 使用 Bolt 协议进行通信的时候,SOFARPC 的超时时间默认为 3 秒,用户可以在引用服务的时候去设置超时时间,又分别可以在服务以及方法的维度设置超时时间,SOFARPC 的超时时间的设置的单位都为毫秒。 服务维度 如果需要在发布服务的时候在服务维度设置超时时间,设置对应的 timeout 参数到对应的值即可。 XML 方式 如果使用 XML 的方式引用服务,设置 <sofa:bi
Git 可以使用四种主要的协议来传输资料:本地协议(Local),HTTP 协议,SSH(Secure Shell)协议及 Git 协议。 在此,我们将会讨论那些协议及哪些情形应该使用(或避免使用)他们。 本地协议 最基本的就是 本地协议(Local protocol) ,其中的远程版本库就是硬盘内的另一个目录。 这常见于团队每一个成员都对一个共享的文件系统(例如一个挂载的 NFS)拥有访问权,或
协议为方法、属性、以及其他特定的任务需求或功能定义蓝图。协议可被类、结构体、或枚举类型采纳以提供所需功能的具体实现。满足了协议中需求的任意类型都叫做遵循了该协议。 除了指定遵循类型必须实现的要求外,你可以扩展一个协议以实现其中的一些需求或实现一个符合类型的可以利用的附加功能。 协议的语法 定义协议的方式与类、结构体、枚举类型非常相似: protocol SomeProtocol { //