Как дождаться выполнения ajax а затем перезагрузки в selenium?

Приветствую.

Возникла такая проблема. Пытаюсь автоматизировать авторизацию и выход из аккаунта на сайте.

За эти действия отвечает одна и та же кнопка, по клику появляется всплывающее меню, либо с формой авторизации, либо с меню пользователя.

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

Получается пока выполняется ajax запрос selenium запускает уже следующее действие - logout , пытается снова кликнуть на кнопку авторизации и затем найти logout ссылку

Как правильно дожидаться пока завершится ajax запрос, пойдет перезагрузка и только потом выполнять следующее действие?
  • Вопрос задан
  • 1222 просмотра
Пригласить эксперта
Ответы на вопрос 3
Toximiner
@Toximiner
1. Никогда не используйте time.sleep()
2. Вам нужно ждать, пока необходимый элемент исчезнет\появится на странице:
wait = WebDriverWait(driver, 20)
wait.until(visibility_of_element_located(locator))

или
wait.until(invisibility_of_element_located(locator))


selenium-python.readthedocs.io/api.html#module-sel...
Ответ написан
ipatov_dn
@ipatov_dn
import time

а перед кликом поставить time.sleep(время требуемое на загрузку)
Ответ написан
@bbidox
nerd
если страница перерисовывается целиком, то перед нажатием на кнопку добавьте в DOM пустой div и ждите, пока он не исчезнец
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы