gpt4 book ai didi

javascript - browser.wait 和 Protractor 的条件

转载 作者:行者123 更新时间:2023-12-02 22:22:50 24 4
gpt4 key购买 nike

使用 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 函数将一直执行,直到返回 true,因此直到客户数量正确为止。现实中发生的情况是,它执行一次并直接进入下一条指令,导致我的测试失败。

提前致谢

最佳答案

browser.wait 返回 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);
});

但是仅仅返回promise是不够的,就像你一样,cucumber不知道如何处理它。你必须告诉 cucumber ,在这个 promise 兑现之前,他不能继续前进。

关于javascript - browser.wait 和 Protractor 的条件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59169445/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com