网页上有一个按钮,如果我第一次单击该按钮,将花费一些时间来获取状态。完成后,如果我说了三分钟后单击,则状态为成功。
这里的问题是我必须在两次单击之间指定睡眠时间以验证状态,有时由于此睡眠时间,导致状态不同步。例如,我单击一个按钮并显示状态,如果3分钟后单击,则状态有时会成功,或者有时状态仍在进行中,这会使我的TC失败。
没有任何方法可以自动单击按钮,直到状态进展为止,然后我可以验证状态。对于成功状态也是如此。
我两次点击之间都处于睡眠状态
browser.sleep(25000)
button.click();
expect(inprogress_class.getText()).toContain('in progress');
browser.sleep(100000) // waiting for a defined time to click a buttonassuming that status will be successful
button.click();
expect(successful_class.getText()).toContain('successful);
预期:按钮会不断被点击,直到状态更改为止
实际:在点击和等待状态更改之间留出睡眠时间
答案 0 :(得分:0)
尝试以下选项
首次单击并等待InProgress
状态
await button.click();
await browser.wait(ExpectedConditions.textToBePresentInElement(await inprogress_class), 25000, 'The wait for inProgress state');
要单击按钮,直到成功,请尝试以下操作
while (await successful_class.getText() !== 'successful') {
await button.click();
await browser.sleep(10000); // update the time with how often the button needs to be clicked
}
expect(await successful_class.getText()).toContain('successful);
希望它对您有帮助
答案 1 :(得分:0)
如果您可以使用async / await,那么它将更加容易,否则您将不得不使用Promises链接。
尝试使用异步/等待方法:
await browser.wait(async () => {
await button.click();
var buttonText = await inprogress_class.getText();
return buttonText === 'in progress';
}, 180000);
expect(inprogress_class.getText()).toContain('in progress');
await browser.wait(async () => {
await button.click();
var buttonText = await successful_class.getText();
return buttonText === 'successful';
}, 180000);
expect(successful_class.getText()).toContain('successful);