在 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.sentMessagewindow.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一样吗

通过 Selenium 在 Chrome 上打开检查(按 F12)

怎么调用selenium打开chrome浏览器?

selenium+java启动Chrome

Selenium4 IDE初体验