节点/量角器在继续之前等待承诺解决

时间:2016-04-27 06:05:48

标签: javascript node.js asynchronous

我正在编写一个获取seleniumCapabilites并将值存储在类中的类。它公开了一种方法,该方法使用类中获得的会话来获取selenium节点。但是当javascript类调用我的新类时,getSeleniumNode将返回undefined。我很确定这是因为getSeleniumNode没有等待Web请求完成处理但是我不确定如何重新设计它才能工作

    var base = require(__paths.e2e.pages + '/base'),
    urlParse = require('url-parse'),
    request = require('sync-request');

module.exports = function (options) {
    var self = base(options);


    browser.getProcessedConfig().then(function (config) {
        self.seleniumHub = new urlParse(config.seleniumAddress);
        console.log(self.seleniumHub.host);

        browser.driver.getCapabilities().then(function (capabilities) {
            self.capabilities = capabilities;

        });
    });

    self.getSessionId = function () {
        return self.capabilities.caps_[
            'webdriver.remote.sessionid'];
    };

    self.getPlatform = function () {
        return self.capabilities.platform;
    };

    self.getBrowserName = function () {
        return self.capabilities.browserName;
    };

    self.getBrowserVersion = function () {
        return self.capabilities.version;
    };

    self.getSeleniumNode = function () {
        var url = 'http://' + self.seleniumHub.host + "/grid/api/testsession?session=" + capabilities.caps_[
            'webdriver.remote.sessionid'];
        var response = request('GET', url);
        var testSession = JSON.parse(response.getBody().toString());
        return new urlParse(testSession.proxyId);
    };

    return self;


};

我的班级是

var base = require(__paths.e2e.pages + '/base');
var seleniumCapabilities = require(__paths.e2e.lib + '/seleniumCapabilities')();


module.exports = function (options) {
    var self = base(options);

    console.log(seleniumCapabilities.getSeleniumNode());




    return self;

};

运行此e2e测试时得到的相关控制台输出是

undefined -- this is the call from       console.log(seleniumCapabilities.getSeleniumNode());

localhost:4444 --- this is the call from       console.log(seleniumCapabilities.getSeleniumNode());

0 个答案:

没有答案