Есть отличная удаленная работа для php+codeception+jenkins+allure+docker спецов. 100% remote! Присоединиться к проекту

Python Selenium. Как работать с модальными окнами?

pytractor
pytest
angularjs
selenium
python
Теги: #<Tag:0x00007f7b6985c2f8> #<Tag:0x00007f7b6986ffb0> #<Tag:0x00007f7b6986fdf8> #<Tag:0x00007f7b6986fb50> #<Tag:0x00007f7b6986f8d0>

(Максим Снитко) #1

Пишу тесты для тестирования веб интерфейса. Интерфейс - это админка написана на AngularJS. Для написания тестов использую py.test, selenium, pytractor. В админке очень много модальных окон, а вот как их подружить с selenium никак не пойму. Selenium не видит элементов модального окна. Подскажите, пожалуйста, в каком направлении копать? И возможно ли вообще решить эту проблему с моим набором инструментов?


#2

Модальное окно - это что? Алерт, диалог загрузки/сохранения файла, всплывающее окно браузера, запрос на авторизацию, еще что-то?
В зависимости от этого работать с ними надо по-разному.


(Максим Снитко) #3

Не алерт, не диалог не окно браузера. Это новый div который добавляется Ангуляром и отображается поверх всей страницы.


(Konstantin) #4

xPath


(Максим Снитко) #5

Уже пробовал. (

selenium.common.exceptions.NoSuchElementException: Message: Unable to locate element: {“method”:“xpath”,“selector”:"//*[@id=“dialog3_1456928067967”]/div/form/div[3]/div/input"}


(Konstantin) #6

@id=“dialog3_1456928067967” = айдишник динамический, выкинь его, используй полный путь к элементу


(Ugin Berets) #7

Модальное окно случайно не обвёрнуто в iframe ?


(Максим Снитко) #8

Нет.


(Максим Снитко) #9

Вопрос решен. Ангуляр для многих элементов прописывает свои директивы. Вот по одной из таких директив и вышел на нужный мне элемент (By.XPATH, ‘//input[@ng-model=“zonecreate.name”]’).

Всем Большое Спасибо!