Здравствуйте!
У меня возникла такая проблема. После заполнения формы нового пользователя и нажатия на кнопку “Сохранить” может быть 2 разных дальнейших сценария:
- Пользователь с таким ФИО уже существует.
- Создался новый пользователь.
Если брать первый сценарий, то после нажатия на кнопку “Сохранить” появляется небольшой alert, который состоит из заголовка - “Внимание!” Описания - “пользователь с ФИО xxx уже существует. Продолжить?” и кнопками - “Да” и “Отменить”.
Если брать второй сценарий, то после нажатия на кнопку “Сохранить” появляется небольшой alert, который состоит из заголовка - “Информация”. Описание - “данные пользователя сохранены” и кнопкой - “Ок”.
Задача такая - независимо от сценария - нажать кнопку “Да” или “Ок”. Я решил использовать инструкцию if, а распознавать разные алерты при помощи xpath по заголовку алерта.
self.driver.find_element(By.XPATH, "//em/button/b[contains(text(), 'Сохранить')]").click()
time.sleep(3)
user_already_exists = self.driver.find_element(By.XPATH, "//*/div/span[contains(text(), 'Внимание')]")
user_new = self.driver.find_element(By.XPATH, "//*/div/span[contains(text(), 'Информация')]")
if user_already_exists.text == "Внимание":
self.driver.find_element(By.XPATH, "//*/em/button[contains(text(), 'Да')]").click()
elif user_new.text == "Информация":
self.driver.find_element(By.XPATH, "//*/em/button[contains(text(), 'OK')]").click()
Но естественно скрипт не работает. А все потому, что если пользователь уже существует, то появляется ошибка
Message: no such element: Unable to locate element: {"method":"xpath","selector":"//*/div/span[contains(text(), 'Информация')]"}
А если пользователь новый, то
Message: no such element: Unable to locate element: {"method":"xpath","selector":"//*/div/span[contains(text(), 'Внимание')]"}
Скажите, как в таких ситуациях поступают знающие люди? Правильно ли я определяю какой алерт выскочил используя заголовок или это не правильно и есть специальный инструмент для всплывающих окошек? И как мне в принципе решить данную задачку?