t.me/atinfo_chat Telegram группа по автоматизации тестирования

Как работать с аллертами в appium+python?

Теги: #<Tag:0x00007f9af9a11ad0> #<Tag:0x00007f9af9a116e8> #<Tag:0x00007f9af9a10810>

Пишу тесты для апликухи на IOs приложение, написано на React-native.
Пишу тесты на Python, запускаю на Appium
Сценарий такой, что я нажимаю на кнопку “добавить товар” и после этого вылазит попап с сообщением, мол все получилось. Попап висит 3 секунды и исчезает.
Подобный попап вылазит при удалении продукта, но тут в попапе есть две кнопки “подтвердить” и “отменить”.
В первом случае я просто хочу проверить что появился попап с конкретным текстом.
Во втором подтвердить или отменить действие.

Попап этот называется React-native Modal, и когда я пробую найти его использую инспектор - я не нахожу, он вроде как вне структуры страницы находится.

Я пробовал работать с попапом по аналогии из Селениума

WebDriverWait(self.driver, 3).until(EC.alert_is_present(), "Bla bla bla")
alert = self.driver.switch_to.alert()
alert.accept()

Но у меня ничего не выходит, тест валится после тайм аута, потому что не может достучаться до попапа.

Кто работал с подобными штуками, помогите плиз.

С подобными штуками не работал, могу только подсказать направление.

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

Аппиум может одновременно работать либо с нативными элементами, либо с вебом, для этого есть методы переключения контекста. Надо переключить его на нативный контекст, найти алерт (если его действительно так можно найти), и потом вернуться в веб.

1 Симпатия

Если как-то поможет, на Андроиде я тосты выцепляю так:
wait.until(ExpectedConditions.presenceOfElementLocated(errorMessageId));
и дальше - с этим ид и работаю…

Но мне проще, ид алерта известен.

1 Симпатия

У меня была инфа где-то, буду у компа отпишусь, если найду

2 Симпатий