Playwright相当于Protractor的浏览器。当条件不满足时等待循环

问题描述 投票:0回答:2

我正在尝试找到一种在不满足某些条件时在 Playwright 中循环的方法。在量角器中我可以使用

browser.wait
。在下面的示例中,我从 Protractor 迁移到 Playwright,代码在 testButton 不可见时单击刷新按钮,一旦它可见,则单击 testButton:

        await browser.wait(async function () {
            return testButton.isPresent().then(async function (present) {
                // Refresh the grid until testButton is present
                if (present) {
                    await testButton.click();
                    return true;
                } else {
                    await refreshButton.click();
                    return false;
                }
        });

我已经看到 Playwright 提供了一组调用来等待特定条件,例如 waitForSelector,但我在尝试让它们循环工作时遇到了麻烦,因为在承诺之前不会解决简单的 while 问题。

javascript protractor playwright
2个回答
2
投票

自 Playwright v1.29 起,您可以重试代码块,直到所有断言都通过:

await expect(async () => {
    await expect(testButtonLocatorHere).toBeVisible();
}).toPass();

await testButtonLocatorHere.click();

我想这可能就是您正在寻找的:)

您还可以将轮询视为可能的解决方案。我之前用过它来解决与您的问题类似的问题。


0
投票

toBeVisible 本身就是一个 retrying 断言,您不需要将其再次包装在另一个断言中。

这会做同样的事情:

await expect(testButtonLocatorHere).toBeVisible();
© www.soinside.com 2019 - 2024. All rights reserved.