2015-06-22 4 views
2

Я пытаюсь проверить, что, закрывая окно, всплывающее окно показывает предупреждающее сообщение.Selenium catch popup on close browser

Я пробовал как driver.close(), так и driver.quit() после того, как убедился, что я нахожусь в правильном окне, но это просто прекращает процесс, так как мое всплывающее окно не отображается.

Я смог проверить его с помощью робота awt и отправки alt + f4, но это не кажется слишком надежным.

Что было бы правильным способом сделать это?

+0

ли предупреждение показ или нет после закрытия браузера и какой браузер вы используете? – Madhan

+0

На Chrome и firefox всплывающее окно отображается после закрытия браузера. Проблема заключается в его тестировании с помощью селена. Как я уже сказал, во время теста я теперь посылаю клавиши alt + f4, чтобы проверить его, и, похоже, он работает, но мне было интересно, есть ли лучший способ сделать это. – Fofole

+0

Я думаю, что Selenium - это сила выхода из браузера, и поэтому вы не можете увидеть всплывающее окно. Это может быть ограничением селена. – Manu

ответ

2

Вместо того, чтобы использовать driver.quit(), чтобы закрыть браузер, закрытие его с помощью объекта Actions может сработать для вас. Это еще один способ закрыть браузер с помощью сочетаний клавиш.

Actions act = new Actions(driver); 
act.sendKeys(Keys.chord(Keys.CONTROL+"w")).perform(); 

Или, если есть несколько вкладок открыто в окне драйвера:

act.sendKeys(Keys.chord(Keys.CONTROL,Keys.SHIFT+"w")).perform(); 
+0

Итак, у меня возникла проблема с CI с использованием робота AWT и попытался использовать ваш код, и он не работает (он не отправляет ключи). Может быть, мне нужно найти элемент на странице, чтобы сфокусировать его перед отправкой ключей? – Fofole

+0

Он работал раньше? Выбор элемента и использование действий аналогичны и могут не решить проблему. – Manu

+0

Ну, локально я использовал клавиши awt.robot, и это сработало. Но на машине CI это не сработает с awt, поэтому я попробовал ваш код, и он не работает. Вы правы, я попытался сосредоточиться на окне, и он все еще не работает. – Fofole

0

Вам необходимо перейти в боевую готовность, если предупреждение отображается принять или отклонить его, а затем вызвать driver.quit();

if(driver.switchTo().alert() != null)//switches only if alert is displayed 
{ 
    Alert alert = driver.switchTo().alert(); 
    alert.dismiss(); // alert.accept(); 

} 
driver.quit(); 

Надеется, что это поможет вам ... любезно получить обратно, если он не работает для вас

+0

Привет. В драйвере.quit() уже закрывается браузер, и никаких вопросов не задано. Поэтому он даже не пойдет на этот IF. Единственный способ, которым я узнал, как это сделать, - отправить ключи ALT + F4 с помощью AWT ROBOT, которые мне не так удобно использовать. Спасибо. – Fofole