Повторите попытку, если загрузчик все еще присутствует на странице - PullRequest
0 голосов
/ 06 апреля 2020

Я работаю с приложением, которое довольно нестабильно с точки зрения времени загрузки данных. Я уже установил тайм-аут waitFor на 15 с и больше не хочу его увеличивать. Мои тесты выполняются в CI, и часто мне приходится перезапускать все, потому что ОДИН элемент не загружен вовремя.

Также я не хочу использовать некоторые bail методы или повторить весь тест.

Моя идея состоит в том, чтобы дождаться элемента, и если элемент с локатором .loader все еще присутствует на странице, я хочу повторить ожидание.

Так что я ищу лучшее способ реализовать это (возможно, обещание?)

function waitWithRetry(elementLocator, retryCount) {
    while (retryCount > 0) {
        try {
            $(`${elementLocator}`).waitForDisplayed();
        } catch (e) {
            if ($('.loader').isDisplayed()) {
                retryCount--;
            } else {
                throw new Error(e);
            }
        }
    }
}

1 Ответ

0 голосов
/ 07 апреля 2020

Приведенный ниже код будет повторяться до тех пор, пока элемент загрузчика не будет доступен, и retryCount раз, когда элемент не будет виден.

function waitWithRetry(elementLocator, retryCount) {
    while (retryCount > 0) {
        try {
            $(`${elementLocator}`).waitForDisplayed();
        } catch (e) {
            if ($('.loader').isDisplayed() && retryCount === 1) {
               throw new Error(e);
            }
             retryCount--;
        }
    }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...