Вопрос

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

Это было полезно?

Решение

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

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

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

driver.switch_to.alert.accept()

Java-эквивалент будет таким:

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

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

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

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

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

Watij - http://watij.com/ - может помочь здесь. Или, если вы знакомы с ruby, watir может помочь - http://wtr.rubyforge.org/ install.html

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

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top