如果页面上仍然存在加载程序,请重试等待

我正在使用在加载数据时间方面非常不稳定的应用程序。我已经将我的 waitFor 超时设置为 15 秒,我不想再增加它了。我的测试是在 CI 中运行的,而且我经常不得不重新运行所有的东西,因为 ONE 元素没有及时加载。


此外,我不想使用某些bail技术或重试整个测试。


我的想法是等待元素,如果.loader页面上仍然存在带有定位器的元素,我想重试等待。


所以我正在寻找实现这一点的最佳方法(也许是承诺?)


function waitWithRetry(elementLocator, retryCount) {

    while (retryCount > 0) {

        try {

            $(`${elementLocator}`).waitForDisplayed();

        } catch (e) {

            if ($('.loader').isDisplayed()) {

                retryCount--;

            } else {

                throw new Error(e);

            }

        }

    }

}


喵喵时光机
浏览 96回答 1
1回答

沧海一幻觉

下面的代码将重试,直到加载器元素可用,并且retryCount一旦元素不可见,就会重试。function waitWithRetry(elementLocator, retryCount) {    while (retryCount > 0) {        try {            $(`${elementLocator}`).waitForDisplayed();        } catch (e) {            if ($('.loader').isDisplayed() && retryCount === 1) {               throw new Error(e);            }             retryCount--;        }    }}
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

JavaScript