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

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

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

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

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

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

Как правильно дожидаться пока завершится ajax запрос, пойдет перезагрузка и только потом выполнять следующее действие?
  • Вопрос задан
  • 1207 просмотров
Пригласить эксперта
Ответы на вопрос 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 и ждите, пока он не исчезнец
Ответ написан
Комментировать
Ваш ответ на вопрос

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

Войти через центр авторизации
Похожие вопросы
Фаст Софт Санкт-Петербург
от 150 000 до 180 000 ₽
от 250 000 ₽
Sibdev Красноярск
от 120 000 до 180 000 ₽
27 мар. 2023, в 05:30
10000 руб./за проект
27 мар. 2023, в 05:25
1000 руб./за проект
13 мар. 2023, в 14:09
15000 руб./за проект