自动化“另存为带有内容的 HAR”

Posted

技术标签:

【中文标题】自动化“另存为带有内容的 HAR”【英文标题】:Automate "Save as HAR with Content" 【发布时间】:2014-03-07 06:50:43 【问题描述】:

我熟悉如何使用 Google Chrome Web Inspector 手动将网页保存为包含内容的 HAR 文件。我想自动化这个。

在搜索自动生成 HAR 文件的工具时,我找到了一些解决方案,但它们都没有保存资源的内容。

我尝试了以下方法,但没有任何运气:

https://github.com/ariya/phantomjs/blob/master/examples/netsniff.js https://github.com/cyrus-and/chrome-har-capturer

获取您请求的页面内容(原始 html)是可行的,但获取所有其他加载的网络资源(CSS、javascript、图像等)的内容是我的问题。

【问题讨论】:

你找到方法了吗? @Monodeep 我从来没有找到解决方案 感谢您的回复。我找到了一个解决方案,并且我正在成功使用它。它使用 Selenium、Firebug 和 NetExport(Firefox 扩展)。如果您仍然需要它,我可以在这里发布代码(我已经用 python 编写了) 仅供参考 chrome-har-capturer 这样做:--content 选项。 【参考方案1】:

我认为自动生成 HAR 最可靠的方法是使用 BrowsermobProxy 以及 chromedriver 和 Selenium。

这是一个 Python 脚本,用于以编程方式生成 HAR 文件,该文件可以集成到您的开发周期中。它还捕获内容。

from browsermobproxy import Server
from selenium import webdriver
import os
import json
import urlparse

server = Server("path/to/browsermob-proxy")
server.start()
proxy = server.create_proxy()

chromedriver = "path/to/chromedriver"
os.environ["webdriver.chrome.driver"] = chromedriver
url = urlparse.urlparse (proxy.proxy).path
chrome_options = webdriver.ChromeOptions()
chrome_options.add_argument("--proxy-server=0".format(url))
driver = webdriver.Chrome(chromedriver,chrome_options =chrome_options)
proxy.new_har("http://***.com", options='captureHeaders': True,'captureContent':True)
driver.get("http://***.com")    
result = json.dumps(proxy.har, ensure_ascii=False)
print result
proxy.stop()    
driver.quit()

您还可以查看这个工具,它可以从 Chrome 和 Firefox 无头生成 HAR 和 NavigationTiming 数据:Speedprofile

【讨论】:

谢谢!还没有机会对此进行测试,但看起来很有希望。 我观察到使用代理会导致比平常更大的时间。是否有一种解决方法可以像通常不使用代理一样获得具有正确时间的 HAR? 以上内容似乎不适用于无头 chrome。因此,如果我提供 chrome_options.add_argument("--headless") 生成的 json 不包含所有 HTTP 请求。【参考方案2】:

你可以看看phantomjs,它看起来像导出为HAR http://phantomjs.org/network-monitoring.html

【讨论】:

确认,抱歉,我没有注意到 netsniff.js 是 phantomjs 的扩展。【参考方案3】:

您可以使用 http 代理来保存内容。在 Windows 上,您可以使用免费的fiddler。在 Mac 和 Linux 上,您可以使用 Charles Proxy,但它不是免费的。

这是 Fiddler 的屏幕截图,您可以选择保存请求的所有荣耀,包括标头。

【讨论】:

以上是关于自动化“另存为带有内容的 HAR”的主要内容,如果未能解决你的问题,请参考以下文章

自动化测试——何为自动化测试,为何自动化测试

自动化用英语怎么说

saltstack

自动化测试框架的发展及开发

「自动化测试」是不是有必要做自动化测试?

Web自动化是如何技术实现的?