我的页面上有两个输入文本框和一个标签。我想从所有三个元素中获取数字,将两个文本框号一起添加,然后检查总和是否等于标签。我该怎么做呢?
这是我到目前为止所做的,但它并没有为我工作。似乎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);
答案 0 :(得分: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]));
});
或者,您也可以使用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
,请参阅: