Проблема с ожиданием появления и исчезания окна загрузки

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

private static final String WAIT_MESSAGE_ID = "hideMainProgressDialog";

public void waitWhileLoadingComplete() {
	wait.until(ExpectedConditions.visibilityOfElementLocated(By.id(WAIT_MESSAGE_ID)));
	wait.until(ExpectedConditions.invisibilityOfElementLocated(By.id(WAIT_MESSAGE_ID)));
}	

Собственно здесь жду когда элемент станет видимым, а потом жду когда исчезнет (элемент исчезает из DOM).
Но работает это очень странно… практически не работает. Несколько переходов между папками проходят, а потом вдруг:

org.openqa.selenium.TimeoutException: Timed out after 20 seconds waiting for visibility of element located by By.id: hideMainProgressDialog

Не могу понять что не так. Визуально это окно появляется и я его вижу. Может быть дело в том что оно появляется/исчезает довольно быстро? Я пробовал поставить pollingTime со стандартных 500 мс, до 10мс, но все-равно ошибка повторяется.

Прошу помощи!

Селениум не гарантирует то, что определятся элементы, которые быстро появляются и исчезают. Он больше для пошаговых проверок годится, между которыми состояние страницы сохраняется. Может быть внутренний лимит, который гораздо больше 10 мс.

Если тест на то, что это окно появляется, надо подобрать условия, когда оно висит долго, или же тестировать вручную.

Если это просто сделано, чтобы подождать, пока оно уберется, заворачиваем в try…catch, чтоб вспомогательный шаг не валил тест.

1 лайк

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

Вообще вроде бы не редкая ситуация когда присутствует окно наподобие “Пожалуйста, ждите” - получается его никто не обрабатывает?

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

1 лайк