gpt4 book ai didi

python - 监控 JSON 有线协议(protocol)日志

转载 作者:太空狗 更新时间:2023-10-29 21:39:51 25 4
gpt4 key购买 nike

根据 selenium 文档,webdriver 客户端和浏览器之间的交互是通过 JSON Wire Protocol 完成的.基本上,用 python、ruby、java 编写的客户端将 JSON 消息发送到网络浏览器,网络浏览器也以 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: Stripping Down Remote 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 项目提交了错误报告和修复。

关于python - 监控 JSON 有线协议(protocol)日志,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25812554/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com