browser.wait 和量角器的条件
browser.wait and conditions with Protractor
我正在使用量角器创建一个客户对象,在保存时我想检查刚刚创建的客户对象是否实际显示。
在 "UI" 学期,单击保存按钮后,对话框创建关闭和客户列表更新时会有一点延迟。
我有原来的customerCount,所以我想让浏览器等到有customerCount + 1张客户卡。
这是我的代码:
步骤:
When('I wait for the customer list to be updated', function() {
return browser.wait(Utils.countElements('.tb-card-item', customerCount + 1), 5000);
});
计数元素:
module.exports = {
countElements(css, i) {
let e = element.all(by.css(css));
return e.count().then(function(elementCount) {
console.log('COUNT : ' + elementCount);
return elementCount === i;
})
}
};
我的理解是 countElement 函数将一直执行到 returns 为真,直到客户数量正确为止。实际上发生的是它被执行一次并直接进入下一条指令,我的测试失败了。
提前致谢
browser.wait
returns Promise 对象,根据 official 文档。
基本上,有两个选项可以告诉 Cucumber 这个特定步骤是异步的。
首先,如果有done
回调
When('I wait for the customer list to be updated', function(done) {
browser.wait(Utils.countElements('.tb-card-item', customerCount + 1), 5000)
.then(() => {
done();
})
})
其次,使用async
关键字
When('I wait for the customer list to be updated', async function() {
await browser.wait(Utils.countElements('.tb-card-item', customerCount + 1), 5000);
});
但是仅仅return承诺是不够的,就像你所做的那样,黄瓜不知道如何处理它。你必须告诉黄瓜他不能继续前进,直到这个承诺得到解决。
我正在使用量角器创建一个客户对象,在保存时我想检查刚刚创建的客户对象是否实际显示。
在 "UI" 学期,单击保存按钮后,对话框创建关闭和客户列表更新时会有一点延迟。
我有原来的customerCount,所以我想让浏览器等到有customerCount + 1张客户卡。
这是我的代码:
步骤:
When('I wait for the customer list to be updated', function() {
return browser.wait(Utils.countElements('.tb-card-item', customerCount + 1), 5000);
});
计数元素:
module.exports = {
countElements(css, i) {
let e = element.all(by.css(css));
return e.count().then(function(elementCount) {
console.log('COUNT : ' + elementCount);
return elementCount === i;
})
}
};
我的理解是 countElement 函数将一直执行到 returns 为真,直到客户数量正确为止。实际上发生的是它被执行一次并直接进入下一条指令,我的测试失败了。
提前致谢
browser.wait
returns Promise 对象,根据 official 文档。
基本上,有两个选项可以告诉 Cucumber 这个特定步骤是异步的。
首先,如果有done
回调
When('I wait for the customer list to be updated', function(done) {
browser.wait(Utils.countElements('.tb-card-item', customerCount + 1), 5000)
.then(() => {
done();
})
})
其次,使用async
关键字
When('I wait for the customer list to be updated', async function() {
await browser.wait(Utils.countElements('.tb-card-item', customerCount + 1), 5000);
});
但是仅仅return承诺是不够的,就像你所做的那样,黄瓜不知道如何处理它。你必须告诉黄瓜他不能继续前进,直到这个承诺得到解决。