【问题标题】:open chrome devtool inspector-inspector in selenium在 selenium 中打开 chrome devtool 检查器检查器
【发布时间】: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的替代方式? 提前致谢!

【问题讨论】:

  • 你的编程语言是什么?

标签: selenium google-chrome selenium-webdriver google-chrome-devtools


【解决方案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

    【讨论】:

      猜你喜欢
      • 2020-04-09
      • 2021-08-07
      • 2015-02-14
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-09-30
      • 2014-07-18
      • 2012-08-30
      相关资源
      最近更新 更多