gpt4 book ai didi

protractor - 如何将 BrowserMob 代理与 Protractor 一起使用?

转载 作者:行者123 更新时间:2023-12-04 15:22:16 25 4
gpt4 key购买 nike

我想在 Protractor 测试套件运行期间捕获我的应用程序发出的网络请求。

BrowserMob Proxy看起来是一个很好的工具。

我想使用 browsermob-node 将 BrowserMob 代理集成到 Protractor 中node.js 绑定(bind)如下:

  • onPrepare : 创建一个新代理并启动它
  • beforeEach : 开始一个新的 HAR
  • afterEach : 将 HAR 写入文件
  • onComplete : 停止代理

  • 但是,bro​​wsermob-node 的 API 要求我将回调传递给每个方法和 onPrepare , onComplete假设是同步的。没有 done我可以通过的回调。

    我的测试在 Firefox、iOS 和 Android 上运行(通过 Appium)。

    最佳答案

    您需要 denodeify回调,即将它们变成 Promises,这样 Protractor 就会等待它们。

    备选方案 1:使用已经包含的 protractor.promise

      //...
    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;
    }

    备选方案 2:使用 Q 库
    var Q = require('q');

    //...
    onPrepare: function() {
    var proxy_doHAR = Q.nfbind(proxy.doHAR);
    return proxy_doHAR('http://yahoo.com');
    }

    更多信息 herehere .

    关于protractor - 如何将 BrowserMob 代理与 Protractor 一起使用?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25609963/

    25 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com