Тестирование onbeforeunload событий из Selenium
Я пытаюсь написать тест Selenium для веб-страницы, которая использует событие onbeforeunload, чтобы вызвать пользователя перед отъездом. Selenium, похоже, не распознает диалоговое окно подтверждения, которое появляется, или чтобы обеспечить способ нажать "ОК" или "Отменить". Есть какой-либо способ сделать это? Я использую драйвер Java Selenium, если это необходимо.
Ответы
Ответ 1
Вы можете написать расширение пользователя (или только некоторый JavaScript в файле storeEval и т.д.), который проверяет, что установлено window.onbeforeunload, а затем заменяет его нулевым, прежде чем продолжить работу со страницы. Уродливый, но должен вытащить вас с страницы.
Ответ 2
Предупреждение: это дает альтернативное решение
Watij - http://watij.com/ - может помочь здесь. Или, если вам удобно с ruby, watir может помочь - http://wtr.rubyforge.org/install.html
Ответ 3
Когда я столкнулся с ограниченным контролем, который у меня был над браузером, используя Selenium, я обратился к MozLab, который решил мою проблему, если только для одной платформы браузера.
Ответ 4
Мне просто нужно было сделать это для моего приложения, где обработчик onbeforeunload
вызывает приглашение, если пользователь покидает страницу, пока документ находится в несохраненном состоянии. Код Python:
driver.switch_to.alert.accept()
эквивалент Java:
driver.switchTo().alert().accept();
Если предупреждение не существует, приведенный выше код завершится с ошибкой NoAlertPresentException
, поэтому нет необходимости в отдельном тесте проверять наличие до принятия приглашения.
Я запускаю Selenium 2.43.0, но я думаю, что это выполнимо какое-то время.
В тех случаях, когда я не хочу, чтобы приглашение появилось вообще, потому что это не то, что я тестирую, я запускаю собственный JavaScript в браузере, чтобы установить window.onbeforeunload
в null
, прежде чем покинуть страницу. Я помещал это в код тестового разрыва.