Подтвердить что ты не робот

Тестирование onbeforeunload событий из Selenium

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

4b9b3361

Ответ 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, прежде чем покинуть страницу. Я помещал это в код тестового разрыва.