У меня есть общее всплывающее окно в моем приложении, которое в основном представляет собой приглашение для “Несохраненных изменений с кнопками” Да “и” Нет “”.
Проблема в следующем: я хочу обработать это из общего места в Automation Framework, я не хочу обрабатывать это всплывающее окно в каждом тестовом случае. Есть ли способ, чтобы я мог написать пользовательский прослушиватель, который может запускаться, как только это появляется в пользовательском интерфейсе.
Если не то, что должно быть лучшим подходом в рамках автоматизации для обработки таких всплывающих окон, то они являются общими для приложения и не очень предсказуемы там, где они появятся.
Я использую Java и TestNG вместе с WebDriver.
Благодарю.
В зависимости от вашего всплывающего окна вы можете регистрировать события со следующим interface WebDriverEventListener
указанным по адресу http://selenium.googlecode.com/git/docs/api/java/org/openqa/selenium/support/events/WebDriverEventListener.html.
Лично мне нравится подход к прямому обращению с этим с помощью специального обработчика ошибок и рекурсивных вызовов функций. Это дает вам более точный контроль… хотя для его работы требуется больше программ. В любом случае в рамках обработки событий/исключений вы можете поместить свой настраиваемый код для обработки всплывающего окна с помощью driver.SwitchTo().Alert().accept()
driver.SwitchTo().Alert().dismiss()
или driver.SwitchTo().Alert().dismiss()
или настраиваемый код для взаимодействия с вашими пользовательскими всплывающими элементами.
При этом, поскольку у вас есть два варианта в вашем всплывающем окне, вы захотите убедиться, что у вас есть несколько тестов, которые обращаются к этому напрямую, иначе вы не будете тестировать все случаи. Возможно, у вас может быть однострочный вызов функции, которая обрабатывает принятие/отклонение всплывающего окна, и вы просто передаете значение bool, принимает ли оно или отклоняет…