我想捕获在Protractor测试套件运行期间应用程序发出的网络请求。
BrowserMob代理看起来像是一个很棒的工具。
我想使用browsermob-node node.js绑定将BrowserMob代理集成到Protractor中,如下所示:
onPrepare
:创建一个新的代理并启动它beforeEach
:开始一个新的HARafterEach
:将HAR写入文件onComplete
:停止代理但是,browsermob-node的API要求我将回调传递给每个方法onPrepare
,onComplete
并且假定是同步的。没有done
我可以通过的回调。
我的测试在Firefox,iOS和Android(通过Appium)上运行。
您需要对回调进行脱节点处理,即将它们转换为Promises,以便Protractor将等待它们。
//...
onPrepare: function() {
var deferred = protractor.promise.defer();
proxy.doHAR('http://yahoo.com', function(err, data) {
if (err) {
deferred.reject('ERROR: ' + err);
} else {
deferred.fulfill(data);
}
});
return deferred.promise;
}
var Q = require('q');
//...
onPrepare: function() {
var proxy_doHAR = Q.nfbind(proxy.doHAR);
return proxy_doHAR('http://yahoo.com');
}
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句