我所拥有的:用 Jasmine 为我的 AngularJS 应用程序编写的几个集成测试规范(它们在我的整个应用程序中导航)
我想要什么:对我的应用程序执行网络监控并使用 HAR 导出数据
简单的解决方案:只需编写一个接收 URL 并使用 HAR 导出数据的脚本。这很容易,但不是自动的(我需要手动提供网址)
增强解决方案:自动化提到的过程。一个脚本,它浏览我的应用程序的所有页面并为每个页面提取网络数据。但是由于我已经通过集成测试(量角器 + Jasmine)浏览了我的应用程序的所有页面,所以我只想“插入”有关导出网络流量的部分。
我发现了这个如何将 BrowserMob 代理与量角器一起使用?,我正在查看此处提供的示例 example,但我不太确定它是如何工作的。
- 我应该把什么作为代理的主机和端口?
- 我正在使用 Selenium,并且我已经为它指定了主机和端口,但是我遇到了
ECONNREFUSED
错误。
这是我的量角器文件配置:
var Proxy = require('browsermob-proxy').Proxy;
...
protractorConf = exports.base = {
//... more things
onPrepare: function() {
... more things....
browser.params.proxy = new Proxy({ // my selenium config for browsermob
selHost: '10.243.146.33',
selPort: 9456
});
//... more things
}
}
在我的一个集成测试规范中(顺便说一句,它是 CoffeeScript):
beforeEach ->
browser.get BASE_URL
browser.params.proxy.doHAR 'some/page/of/my/app', (err, data) ->
if err
console.log err
else
console.log data
但正如我所说的那样,我得到了 ECONNREFUSED 错误。我对 Selenium 与 Protractor 和 brosermob 的集成非常迷茫。
有什么想法或替代方案吗?谢谢!