getAttribute返回未解析

时间:2015-06-18 21:04:07

标签: angularjs protractor

我只想尝试将输入值的属性保存到变量中。

这是代码:

var sliderNumber = element.all(by.model('color.red')).get(1);
var firstNum = sliderNumber.getAttribute('value').then(function(value) {
    return value;
});
  //Some code that changes the  sliderNumber attribute      
expect(sliderNumber.getAttribute('value')).toEqual(firstNum + 1);

这给我一个错误:

  

预期' 184'等于Promise :: 433([[PromiseStatus]]:" pending")1。

我也尝试过:

var firstNum = function() {
    return sliderNumber.getAttribute('value').then(function(value) {
        return value;
    });
}

根本没有帮助。我该如何解决这个承诺?

1 个答案:

答案 0 :(得分:2)

由于.getAttribute()返回一个将以异步方式调用回调的promise,您需要将测试逻辑放在回调中:

var sliderNumber = element.all(by.model('color.red')).get(1);

// get the initial value
sliderNumber.getAttribute('value').then(function(value) {
    // once we've got the initial value, store it, then proceed with your test
    var initialValue = parseInt(value, 10);

    //Some code that changes the  sliderNumber attribute  

    expect(sliderNumber.getAttribute('value')).toEqual((initialValue + 1).toString());
});

您不能简单地在回调之外获取返回值,因为在您的其余代码之后可能会或可能不会调用该回调。