在 selenium 中打开 chrome devtool 检查器检查器
Posted
技术标签:
【中文标题】在 selenium 中打开 chrome devtool 检查器检查器【英文标题】:open chrome devtool inspector-inspector in selenium 【发布时间】:2019-05-09 12:52:57 【问题描述】:我希望保存(安全)来自某些网页的 WebSocket 流量。我尝试使用chrome-devtool
保存 HAR。但显然,it doesn't save the WebSocket traffic。但是,我发现this answer 表明如果我可以更改SDK
并记录所有SDK.networkLog.requests()
,我可以记录所有请求。不过,要运行 SDK
代码,我需要从 Selenium 打开 chrome inspector-inspector
。我知道我可以使用来自this answer 的 selenium 打开开发工具。关于如何打开inspector-inspector
有什么建议吗?或者记录WebSocket
的替代方式?
提前致谢!
【问题讨论】:
你的编程语言是什么? 【参考方案1】:您可以使用wshook 来拦截和修改WebSocket 请求和消息事件。使用executeScript()
或execute_script()
将以下脚本注入页面。
(function()
window.sentMessage = [];
window.receivedMessage = [];
var s = document.createElement('script');
s.src = 'https://cdn.jsdelivr.net/gh/skepticfx/wshook@0.1.1/wsHook.js';
s.onload = function()
window.wsHook.before = function(data, url)
window.sentMessage.push(data);
console.log("Sending message to " + url + " : " + data);
window.wsHook.after = function(messageEvent, url, wsObject)
window.receivedMessage.push(messageEvent.data);
console.log("Received message from " + url + " : " + messageEvent.data);
return messageEvent;
document.body.appendChild(s)
)();
上面的代码稍后执行后,您可以从变量window.sentMessage
和window.receivedMessage
获取数据数组
【讨论】:
【参考方案2】:因此您可以使用 Chrome 远程调试协议作为解决方案。启动 Chrome 63 即使 Selenium 正在控制浏览器,其他客户端也可以连接到 chrome 并对其进行调试。您可以使用 --remote-debugging-port
选项启动 chrome。我没有亲自从事过记录 web-socket 流量的工作,但做过一些 chrome 分析,这应该能够提供帮助。以下是一些资源供您查看:
Chrome dev protocol viewer
检查此资源是否可以帮助chrome-remote-interface
还有这个Selenium + Chrome Dev-tools makes a Perfect Browser Automation Recipe
【讨论】:
以上是关于在 selenium 中打开 chrome devtool 检查器检查器的主要内容,如果未能解决你的问题,请参考以下文章
python的selenium自动化打开chrome后自动和手工混合操作?
selenium调用chrome能跟直接打开chrome一样吗