Тестирование событий перед выгрузкой из Selenium

Я пытаюсь написать тест Selenium для веб-страницы, которая использует событие onbeforeunload, чтобы запросить пользователя перед уходом. Selenium, похоже, не распознает диалоговое окно подтверждения, которое появляется, или не предоставляет способ нажать OK или Cancel. Есть какой-либо способ сделать это? Я использую драйвер Java Selenium, если это уместно.

Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
Как вычислять биты и понимать побитовые операторы в Java - объяснение с примерами
Как вычислять биты и понимать побитовые операторы в Java - объяснение с примерами
В компьютерном программировании биты играют важнейшую роль в представлении и манипулировании данными на двоичном уровне. Побитовые операции...
Поднятие тревоги для долго выполняющихся методов в Spring Boot
Поднятие тревоги для долго выполняющихся методов в Spring Boot
Приходилось ли вам сталкиваться с требованиями, в которых вас могли попросить поднять тревогу или выдать ошибку, когда метод Java занимает больше...
Полный курс Java для разработчиков веб-сайтов и приложений
Полный курс Java для разработчиков веб-сайтов и приложений
Получите сертификат Java Web и Application Developer, используя наш курс.
12
0
3 367
4
Перейти к ответу Данный вопрос помечен как решенный

Ответы 4

Предупреждение: это дает альтернативное решение

Watij - http://watij.com/ - может здесь помочь. Или, если вам нравится рубин, ватир может помочь - http://wtr.rubyforge.org/install.html

Ответ принят как подходящий

Вы можете написать расширение пользователя (или просто какой-то JavaScript в storeEval и т. д.), Которое проверяет, что установлено window.onbeforeunload, а затем заменяет его на null, прежде чем продолжить со страницы. Уродливо, но должно убрать вас со страницы.

Я не стал этим заниматься (мои требования изменились так, что мне в любом случае было бы лучше использовать обычное оповещение), но похоже, что это сработает, и он близок к тому, как Selenium обрабатывает тестирование для других оповещений.

Moss Collum 27.11.2008 06:36

это был просто вопрос добавления js_eval "window.onbeforeunload=null" перед открытием для меня. (selenium-client на Ruby, но вы сможете легко переводить на другие языки)

Bryan Larsen 01.03.2011 03:36

Когда я столкнулся с ограниченным контролем над браузером с использованием Selenium, я обратился к плагину MozLab, который решил мою проблему хотя бы для одной платформы браузера.

Мне просто пришлось сделать это для моего приложения, в котором обработчик onbeforeunload выводит запрос, если пользователь покидает страницу, когда документ находится в несохраненном состоянии. Код Python:

driver.switch_to.alert.accept()

Эквивалент в Java:

driver.switchTo().alert().accept();

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

Я использую Selenium 2.43.0, но я думаю, что уже какое-то время это возможно.

В тех случаях, когда я не хочу, чтобы подсказка появлялась вообще, потому что это не то, что я тестирую, я запускаю собственный JavaScript в браузере, чтобы установить window.onbeforeunload на null перед тем, как покинуть страницу. Я поместил это в тестовый код разборки.

Другие вопросы по теме