Перейти к содержимому

Фотография

Как изменить поведение WebDriver при UnexpectedAlertPresentException


  • Авторизуйтесь для ответа в теме
Сообщений в теме: 3

#1 jor77

jor77

    Новый участник

  • Members
  • Pip
  • 11 сообщений
  • ФИО:Владимир А

Отправлено 12 апреля 2014 - 12:29

Добрый день, Уважаемые!

 

Использую Webdriver и Python.

Возникла следующая проблема:

    На сайте может возникать алерт при этом поднимается исключение UnexpectedAlertPresentException.

Прочитал, что Вебдрайвер для Файрфокса автоматически отклоняет эти алерты. Также пишут, что можно сделать так, чтобы эти алерты не отклонялись, а подтверждались. Или игнорировались, и тогда можно его обработать самому.  При попытке обрабатывать эти алерты  - ничего не выходит, так как Вебдрайвер глушит их до того, как что-то их сможет обработать.

Мне надо, чтобы эти алерты подтверждались! Ну, или хотя бы игнорировались, чтобы я сам их обработал.

Подскажите, пожалуйста, как это сделать?


  • 0

#2 BabyRoot

BabyRoot

    Специалист

  • Members
  • PipPipPipPipPip
  • 833 сообщений


Отправлено 14 апреля 2014 - 06:51

Вообще-то странно что они сами у вас закрываются, ибо у драйвера есть капабилити, отвечающая за закрытие:



chromeCapabilities.setCapability("unexpectedAlertBehaviour", "accept");

А у ФФ такое же.

Смотрите где у вас инициализируется драйвер, может там что-то добавлено.


  • 0

#3 barancev

barancev

    Администратор

  • Admin
  • PipPipPipPipPipPip
  • 6 871 сообщений
  • ФИО:Алексей Баранцев
  • Город:Россия, Москва


Отправлено 15 апреля 2014 - 09:20

Да, подтверждаю, нужно использовать capability unexpectedAlertBehaviour.
  • 0
Алексей Баранцев
Тренинги для тестировщиков (тестирование производительности, защищенности, тест-дизайн, автоматизация):
Линейка тренингов по Selenium

#4 jor77

jor77

    Новый участник

  • Members
  • Pip
  • 11 сообщений
  • ФИО:Владимир А

Отправлено 15 апреля 2014 - 09:23

Ну, скажем так, я, наверное, немного не так выразился. Алерты не то чтобы сами закрываются. Конечно же возникает исключение UnexpectedAlertPresentException. Если его не обрабатывать, то, естественно, все валится по ошибке. Но если его обрабатывать, то алерт Селениумом закроется. Достаточно просто в обработчике исключения хоть что-нить прописать, хоть pass, хоть print - и алерт закроется селениумом автоматически, причем dismiss. Если пробовать при этом делать switch_to_alert() то алерта уже нет, его не существует, он уже закрыт.

Про капабилити я знал, но у меня не получалось никак сделать этот параметр как надо мне - ничего не менялось.

Теперь разобрался! :)  Спасибо за наводку. :) Я понял, что надо дальше копать в этом направлении :)  И, наконец, докопался :) Оказалось, что я неправильно с этими капабилитями работал :)  Теперь все нормально  - Алерт автоматически принимается.

Привожу рабочий вариант на Питоне, может кому пригодится.

 

from selenium.webdriver.common.desired_capabilities import DesiredCapabilities

cap = DesiredCapabilities.FIREFOX
cap["unexpectedAlertBehaviour"] =  "accept"

driver = webdriver.Firefox(capabilities=cap)


  • 0


Количество пользователей, читающих эту тему: 0

0 пользователей, 0 гостей, 0 анонимных