我已经开始使用Protractor进行自动化回归测试,并且是异步执行,promise等概念的新手。最近我遇到了一个我不知道如何实现的测试
在一个网页中,有一个表格,其中的每一列都包含链接。单击链接后,会弹出一个框,其中包含有关特定项目的信息。这不会打开新的网页/标签/窗口,而只是显示更多的网页元素和一个完成的按钮以消除弹出窗口。我正在尝试实现的测试是确保至少一个链接将在与之关联的弹出窗口中显示某个元素。我正在尝试使用伪代码:
单击链接->检查元素->如果元素出现,然后完成测试->如果元素没有出现然后循环,然后单击下一个链接->如果没有更多要测试的链接,则测试失败
我已经完成了关于诺言和循环如何不能很好地交互的研究,并且在研究尝试使用函数闭包和映射来实现我试图做的但没有成功的事情之后。有人对如何实施此测试有任何建议吗?
答案 0 :(得分:0)
您没有提供一些代码,因此我不得不猜测其结构,但是如果您使用async/await,则答应和循环实际上做会很好地混合在一起!>
const sleepPromise = ms => new Promise(r => setTimeout(r, ms));
(async () => {
for (let i=0; i<5; i++) {
await sleepPromise(1000);
console.log('one second passed');
}
})()
在asynchronous functions内,您可以将await
放在Promise的前面,使它们的行为类似于同步函数。在后台,它们仍然是promises,但是它允许您使用promises编写干净的循环。