我试图从rows.each()中更新rowNumber变量,但是当我在之后控制它时,它仍然设置为null。我究竟做错了什么?我甚至尝试过定义var rowNumber'更高的',同样的结果。
var licenceNumber = 233521673;
it('should open created Driver Licence', function() {
var rowNumber = null;
var rows = element.all(by.repeater('(rowRenderIndex, row) in rowContainer.renderedRows track by $index'));
rows.each(function(element, index) {
element.getText().then(function (text) {
if (text.includes(licenceNumber)) {
rowNumber = index;
return true;
}
});
});
console.log('rowNumber = ', rowNumber);
});
答案 0 :(得分:1)
使用Promise.all等待所有承诺解决:
var licenceNumber = 233521673;
it('should open created Driver Licence', function() {
var rowNumber = null;
var rows = element.all(by.repeater('(rowRenderIndex, row) in rowContainer.renderedRows track by $index'));
var promises = [];
rows.each(function(element, index) {
var promise = element.getText().then(function (text) {
if (text.includes(licenceNumber)) {
rowNumber = index;
}
});
promises.push(promise);
});
return Promise.all(promises).then(function () {
console.log('rowNumber = ', rowNumber);
});
});
请注意,链接到Promise.all的promise也会返回给Mocha。这很重要,因为它告诉Mocha这个测试是异步的,并且在返回的promise被解析或拒绝之前不会被认为是完整的。详细了解此here。