从promises中添加多个值[Protractor]

Kai*_*777 4 javascript selenium protractor

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

这是我到目前为止所做的,但它并没有为我工作.似乎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);
Run Code Online (Sandbox Code Playgroud)

ale*_*cxe 6

你可以用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]));
});
Run Code Online (Sandbox Code Playgroud)

或者,你也可以使用qpromise库和它的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);
});
Run Code Online (Sandbox Code Playgroud)

而且,你还可以代替protractor.promiseq,请参阅: