自动化从谷歌浏览器生成HAR文件

时间:2012-11-24 01:38:28

标签: google-chrome automation spdy har

基本上我需要的是一种自动化以下操作的结果的方法:

  1. 打开新标签页;

  2. 打开开发人员工具中的“网络”标签;

  3. 加载网址;

  4. 选择“全部保存为HAR”。

  5. 通常,建议的解决方案涉及使用PhantomJSbrowsermob-proxypcap2har;那些不符合我的情况,因为我需要处理SPDY流量。

    我试图深入研究Google Chrome Extensions API,事实上我设法自动化了一些任务,但对于生成HAR文件的问题仍然没有运气。现在this method特别有希望,但我仍然无法弄清楚如何使用它。

    换句话说,我需要来自 Google家伙的this experiment 。请注意以下事项:

      

    我们使用Chrome的remote debugging interface一个自定义客户端启动手机上的浏览器,清除其缓存和其他状态,启动网页加载,并接收Chrome开发者工具消息以确定页面加载时间和其他绩效指标。

    有什么想法吗?


    解决方案

    对于好奇的人,我最终得到了一个自动执行此类测试的Node.js模块:chrome-har-capturer。这也让我有机会深入了解Remote Debugging Protocol并为通用Chrome自动化编写更低级别的Node.js界面:chrome-remote-interface

3 个答案:

答案 0 :(得分:6)

简短的回答是,无法直接获取您所追踪的数据。 getHAR方法仅适用于扩展DevTools本身的扩展。好消息是,您可以自己构建HAR文件而不会有太多麻烦 - 这正是what phantom.js does

  1. 使用远程调试启动Chrome
  2. 使用websocket连接在调试端口上连接到Chrome
  3. 启用“网络”调试,您也可以清除缓存等 - 请参阅Network API
  4. 告诉浏览器导航到您要捕获的页面,Chrome会将所有请求元数据传回给您。
  5. 将网络数据按到HAR格式,ala phantom.js
  6. ...
  7. 利润。
  8. 首先,我有一篇帖子,其中包含示例Ruby代码,您应该开始使用步骤1-4:http://www.igvita.com/2012/04/09/driving-google-chrome-via-websocket-api/

答案 1 :(得分:1)

现在有一个浏览器插件可以执行此操作:https://github.com/devtools-html/har-export-trigger

它使用WebExtensions DevTools API,并且我将它与Firefox和Chrome一起使用。

在此处查看我的Chrome浏览器代码:https://github.com/theri/web-measurement-tools/blob/master/load/load_url_using_chrome.py#L175

在Chrome中自动安装插件比在Firefox中复杂一些,但可行-我在本地提取了插件档案,然后在chrome_prefs.json中链接到它(请参见同一存储库)。

答案 2 :(得分:0)

不确定是否有帮助,HAR Recorder 使用 Chrome 调试协议记录 HAR 并生成 har 文件(不打开 devtools)。如果你想要一个变体,你可以分叉并对其进行更改。