Selenium 使用 HAR Export xpi 读取网络数据

Posted

技术标签:

【中文标题】Selenium 使用 HAR Export xpi 读取网络数据【英文标题】:Selenium read network data using HAR Export xpi 【发布时间】:2018-07-19 10:24:37 【问题描述】:

我正在使用 HAR Export XPI 来获取使用 selenium 遍历的页面的网络流量。我正在将 XPI 添加到 ffv46(因为无法将 XPI 添加到最新的 ff 浏览器)。我已经使用了下面提到的配置文件设置 -

profile.setPreference("app.update.enabled", false);
profile.setPreference("extensions.netmonitor.har.enableAutomation", true);
profile.setPreference("extensions.netmonitor.har.contentAPIToken", "true");
profile.setPreference("extensions.netmonitor.har.autoConnect", true);
profile.setPreference("devtools.netmonitor.enabled", true);
profile.setPreference("devtools.netmonitor.har.pageLoadedTimeout", "50000");
profile.setPreference("devtools.netmonitor.har.defaultLogDir", "FOLDER_ON_SYSTEM");
profile.setPreference("devtools.netmonitor.har.enableAutoExportToFile", false);

我正在注入以下 javascript 来获取 HAR 文件。

function triggerExport() 

  var options = 
    token: "true",
    getData: true,
    fileName: "Export_%y%m%d_%H%M%S"
  ;
  HAR.triggerExport(options).then(result => 
      console.log(result);
  );
;

if (typeof HAR === 'undefined') 

    console.log("Calling Undefined");
    addEventListener('har-api-ready', event => 
        console.log("har api ready");
        console.log(event);
        triggerExport();
    , false);
 
else 

    console.log("Calling defined");
    triggerExport();

但是没有生成 HAR 文件。有什么我想念的吗。 此外,如果我尝试在 FF 控制台中键入 HAR,我会收到未定义的消息,这会导致函数失败。

我还缺少其他设置吗?

提前谢谢!!!!

【问题讨论】:

【参考方案1】:

由于我没有运气使用其他建议的解决方案解决此问题(AFAIK browsermob proxy 和 XPI 有一段时间没有更新),我创建了一个小型 npm 模块来将硒测试捕获为 HAR 文件 - link

我使用 Chrome Dev Tools Protocol 来捕获 Fetch 事件,你可以看到我的逻辑here

在这里添加我关于如何convert selenium tests to API tests 的完整文章。

【讨论】:

以上是关于Selenium 使用 HAR Export xpi 读取网络数据的主要内容,如果未能解决你的问题,请参考以下文章

由于 SSL 证书使用 Selenium Webdriver 和 BrowserMob 代理来捕获 har 文件,因此无法加载资源

HAR 响应中没有标头

如何从 HAR 文件中获取总网页响应时间?

如何在 Windows XP 上使用 pip 安装 selenium 包?

Selenium Webdriver如何触发HTTP请求

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