2013-09-23 2 views
1

У меня проблема с обработкой ALert pop ups из Chrome, я продолжаю получать следующую ошибку. org.openqa.selenium.UnhandledAlertException: неожиданное предупреждение открыто (информация о сессии: chrome = 29.0.1547.66) (Информация о драйвере: chromedriver = 2.3, платформа = Windows NT 5.1 SP3 x86).Обработка предупреждений Windows на Chrome Драйвер (Webdriver)

Вот что я пробовал до сих пор. КОГДА я попадаю на страницу, где отображается ошибка:

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

Также попробовал.

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

а также такая же ошибка.

Если у кого-нибудь есть решение для этого, это будет оценено.

ответ

1

Возможно, это версия вашего ChromeDriver. Я бы не рекомендовал всегда обновлять новейшие версии чего-то. Дефектов много.

Я использую ChromeDriver win32_2.0, и он отлично работает. Try that version.

+0

Спасибо им, чтобы попробовать, спасибо за ответ. – elcharrua

1

Фактически это (UnhandledAlertException) появляется, если вы не обрабатываете предупреждение надлежащим образом. В противном случае, если вы выполняете какую-либо операцию с экземпляром драйвера перед закрытием предупреждения.

Пример

Шаг 1: Нажмите кнопку // это приведет к появляется уведомление

Шаг 2: // Здесь нужно предупредить обрабатывать

На этапе-2 вместо если вы выполняете какую-либо другую операцию с экземпляром драйвера, он будет вызывать исключение UnhandledAlertException.

+0

Если вы не используете экземпляр драйвера, как я могу работать с ним? Станьте я не могу создать экземпляр предупреждения без использования драйвера isntance. Это метод, который я сделал для обработки предупреждения \t public static boolean manejarAlertas() { \t \t boolean alerta = true; \t \t попробовать { \t \t \t \t \t \t // Espero 10 Сегундо Como Maximo дие aparezca эль Mensaje де бдительными. \t \t \t WebDriverWait wait = новый WebDriverWait (драйвер, 20); \t \t \t wait.до (ExpectedConditions.alertIsPresent()); \t \t \t driver.switchTo(). Alert(). Accept(); \t \t \t // Si esta presente hago click en ok. \t \t \t //alert.accept(); \t \t} catch (исключение e) { \t alerta = false; \t \t} \t \t возвращение alerta; \t} – elcharrua

+0

Вместо WebDriverWait просто попробуйте статическое ожидание. Я имею в виду поставить Thread.sleep (3000); и попробуйте то же самое. Если это работает, мы можем думать о логике ожидания. – Santoshsarma

+0

Пробовал это, и проблема не исчезла, я даже попытался использовать ActionKey и нажать клавишу Key.Esc и ее ту же ошибку. – elcharrua

0

У меня возникла проблема с IE. Но с двумя простыми изменениями он начал работать как под FF:
1) Как было предложено https://stackoverflow.com/a/20611297/2872258 я поставил еще один вариант при создании IEDriver - unexpectedAlertBehaviour = Игнорировать
2) Я также WebDriverWait для оповещения, с установкой ImplicityWait на «0» в в самом начале - в соответствии с тем, что @Santoshsarma сказал, что это еще одна проблема.

Может быть решением для Chrome.

0

Я попытался поймать ошибку stackoverflow, и это сработало для меня как обходной путь.

try 
{ 
    driver.findElement(By.xpath('xpath')).click(); // command that will trigger the alert window 
} 
catch (StackOverflowError e) 
{ 
    driver.switchTo().alert().dismiss(); // or driver.switchTo().alert().accept(); 
    // the rest of the scripts can be added here 
} 
Смежные вопросы