selenium - 在selenium中打开chrome devtool检查器检查器

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

我希望保存某些网页的(安全)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 的替代方法? 提前致谢!

最佳答案

您可以使用wshook拦截和修改 WebSocket 请求和消息事件。使用 executeScript()execute_script() 将以下脚本注入(inject)页面。

(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获取数据数组

关于selenium - 在selenium中打开chrome devtool检查器检查器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53674896/

相关文章:

java - 如何仅从一个 GUI 进行 JUnit 测试?

javascript - Google Chrome 扩展程序如何退出自己的后台进程?

javascript - 卸载在沙盒 Chrome 应用程序中不可用

selenium - 在失败场景的范围报告 4 中添加屏幕截图

java - 如何在 Selenium WebDriver 中设置可执行 IE 驱动程序的路径

c# - Selenium webdriver : IE 11 element. Click() 不起作用

java.lang.IllegalStateException : The path to the driver executable must be set by the webdriver. chrome.driver 系统属性

c# - 系统.TypeLoadException : Method 'Dispose' in type 'OpenQA.Selenium.Appium.Service.AppiumCommandExecutor'

selenium - NoSuchElementException,Selenium 无法定位元素

javascript - js代码在firefox中工作而不是在chrome中工作