如果加载程序仍然存在于页面上,请重试等待
Retry wait if loader is still present on the page
我正在使用加载数据时间非常不稳定的应用程序。我已经将 waitFor 超时设置为 15 秒,我不想再增加它了。
我的测试在 CI 中 运行 进行,而且我经常不得不重新 运行 一切,因为一个元素没有及时加载。
此外,我不想使用某些 bail
技巧或重试整个测试。
我的想法是等待元素,如果带有定位器 .loader
的元素仍然存在于页面上,我想重试等待。
所以我正在寻找实现这个的最佳方法(也许是 Promise?)
function waitWithRetry(elementLocator, retryCount) {
while (retryCount > 0) {
try {
$(`${elementLocator}`).waitForDisplayed();
} catch (e) {
if ($('.loader').isDisplayed()) {
retryCount--;
} else {
throw new Error(e);
}
}
}
}
下面的代码将重试,直到加载器元素可用,一旦元素不可见,将重试 retryCount
次。
function waitWithRetry(elementLocator, retryCount) {
while (retryCount > 0) {
try {
$(`${elementLocator}`).waitForDisplayed();
} catch (e) {
if ($('.loader').isDisplayed() && retryCount === 1) {
throw new Error(e);
}
retryCount--;
}
}
}
我正在使用加载数据时间非常不稳定的应用程序。我已经将 waitFor 超时设置为 15 秒,我不想再增加它了。 我的测试在 CI 中 运行 进行,而且我经常不得不重新 运行 一切,因为一个元素没有及时加载。
此外,我不想使用某些 bail
技巧或重试整个测试。
我的想法是等待元素,如果带有定位器 .loader
的元素仍然存在于页面上,我想重试等待。
所以我正在寻找实现这个的最佳方法(也许是 Promise?)
function waitWithRetry(elementLocator, retryCount) {
while (retryCount > 0) {
try {
$(`${elementLocator}`).waitForDisplayed();
} catch (e) {
if ($('.loader').isDisplayed()) {
retryCount--;
} else {
throw new Error(e);
}
}
}
}
下面的代码将重试,直到加载器元素可用,一旦元素不可见,将重试 retryCount
次。
function waitWithRetry(elementLocator, retryCount) {
while (retryCount > 0) {
try {
$(`${elementLocator}`).waitForDisplayed();
} catch (e) {
if ($('.loader').isDisplayed() && retryCount === 1) {
throw new Error(e);
}
retryCount--;
}
}
}