【问题标题】:Adding multiple values from promises [Protractor]从承诺中添加多个值 [量角器]
【发布时间】:2015-09-01 16:52:35
【问题描述】:

我的页面上有两个输入文本框和一个标签。我想从所有三个元素中获取数字,将两个文本框数字相加,然后检查总和是否等于标签。我该怎么办?

这是我到目前为止所拥有的,但它对我不起作用。似乎 getAttribute 返回一个在数字周围带有撇号的值。如果我尝试使用“parseInt”,它会返回“NaN”

element(by.id('textbox1')).getAttribute('value').then(function(value){
textbox1value = value;
});

element(by.id('textbox2')).getAttribute('value').then(function(value){
textbox2value = value;
});

element(by.id('label1')).getText().then(function(value){
label1value = value;
});

expect(textbox1value + textbox2value).toEqual(label1value);

【问题讨论】:

    标签: javascript selenium protractor


    【解决方案1】:

    其实你可以用promise.all()解决它:

    var first = element(by.id('textbox1')).getAttribute('value'),
        second = element(by.id('textbox2')).getAttribute('value'),
        total = element(by.id('label1')).getText();
    
    protractor.promise.all([first, second, total]).then(function (values) {
        expect(parseInt(values[0]) + parseInt(values[1])).toEqual(parseInt(values[2]));
    });
    

    或者,你也可以使用q promise library,它是spread()语法糖:

    Q.all([first, second, total]).spread(function (first, second, total) {
        first = parseInt(first);
        second = parseInt(second);
        total = parseInt(total);
    
        expect(first + second).toEqual(total);
    });
    

    而且,您还可以将protractor.promise 替换为q,参见:

    【讨论】:

      猜你喜欢
      • 2015-10-25
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-10-31
      • 1970-01-01
      相关资源
      最近更新 更多