如何捕获promise返回并在变量中使用它

时间:2016-01-11 20:58:44

标签: protractor

我正在使用以下代码从元素中捕获值,并在稍后的代码中使用sendKeys命令中的该元素。

getPort = function(){
    $('#Window').element(by.id('Port')).getAttribute('value').then(function(text){
            console.log(text);
            return text;
        });
        };
var port = getPort();

我稍后(在同一个“it”块中)尝试调用sendKeys

$('#Window').element(by.id('LinkedIPAddress')).sendKeys('website:' +port);

然而,sendKeys命令总是说变量端口是未定义的值,来自该函数的控制台日志显示正确的信息,所以我知道它正在捕获正确的信息。

2 个答案:

答案 0 :(得分:2)

getPort()返回承诺

getPort = function() {
    return $('#Window').element(by.id('Port')).getAttribute('value');
};

当你需要一个真正的价值时解决它:

getPort().then(function (port) {
    $('#Window').element(by.id('LinkedIPAddress')).sendKeys('website:' + port);
});

答案 1 :(得分:1)

port未定义,因为您只返回回调;不是你的方法。您还需要一个return。这应该有效:

getPort = function(){
  return $('#Window').element(by.id('Port')).getAttribute('value').then(function(text){
    console.log(text);
    return text;
  });
};

var port = getPort();

@ alecxe的答案也很好。只是取决于你想要如何工作。