Тестирование перед загрузкой событий из Selenium - PullRequest
11 голосов
/ 02 октября 2008

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

Ответы [ 4 ]

3 голосов
/ 03 октября 2008

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

1 голос
/ 06 ноября 2014

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

driver.switch_to.alert.accept()

Эквивалент Java будет:

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

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

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

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

0 голосов
/ 03 октября 2008

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

0 голосов
/ 03 октября 2008

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

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

...