Обработка предупреждений в Selenium WebDriver (selenium 2) с Java

Я хочу определить, появилось ли предупреждение или нет. В настоящее время я использую следующий код:

try { Alert alert = webDriver.switchTo().alert(); // check if alert exists // TODO find better way alert.getText(); // alert handling log().info("Alert detected: {}" + alert.getText()); alert.accept(); } catch (Exception e) { } 

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

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

Это то, что сработало для меня с помощью Explicit Wait from WebDriver: расширенное использование

 public void checkAlert() { try { WebDriverWait wait = new WebDriverWait(driver, 2); wait.until(ExpectedConditions.alertIsPresent()); Alert alert = driver.switchTo().alert(); alert.accept(); } catch (Exception e) { //exception handling } } 

Напишите следующий метод:

 public boolean isAlertPresent() { try { driver.switchTo().alert(); return true; } // try catch (Exception e) { return false; } // catch } 

Теперь вы можете проверить наличие оповещения или нет, используя метод, написанный выше, как показано ниже:

 if (isAlertPresent()) { driver.switchTo().alert(); driver.switchTo().alert().accept(); driver.switchTo().defaultContent(); } 
 Предупреждающее предупреждение = driver.switchTo (). Alert ();

 alert.accept ();

Вы также можете отказаться от windows предупреждения:

 Предупреждающее предупреждение = driver.switchTo (). Alert ();

 Оповещение () уволить ().
 try { //Handle the alert pop-up using seithTO alert statement Alert alert = driver.switchTo().alert(); //Print alert is present System.out.println("Alert is present"); //get the message which is present on pop-up String message = alert.getText(); //print the pop-up message System.out.println(message); alert.sendKeys(""); //Click on OK button on pop-up alert.accept(); } catch (NoAlertPresentException e) { //if alert is not present print message System.out.println("alert is not present"); } 

Вы можете попробовать

  try{ if(webDriver.switchTo().alert() != null){ Alert alert = webDriver.switchTo().alert(); alert.getText(); //etc. } }catch(Exception e){} 

Если это не сработает, вы можете попробовать выполнить цикл всех оконных ручек и посмотреть, существует ли предупреждение. Я не уверен, откроется ли предупреждение в новом окне с использованием seleniumа.

 for(String s: webDriver.getWindowHandles()){ //see if alert exists here. } 
  • Selenium 2.0b3 IE WebDriver, нажмите, не стреляйте
  • В чем разница между css-selector & Xpath? что лучше (по производительности и для кросс-браузерного тестирования)?
  • Невозможно найти двоичный файл firefox в PATH. Убедитесь, что firefox установлен
  • Selenium ждет загрузки контента Ajax - универсальный подход
  • Отладка Ошибка «Элемент не кликается в точке»
  • Как избежать исключения StaleElementReferenceException в Selenium?
  • Selenium WebDriver: Подождите, пока сложная страница с JavaScript для загрузки
  • Загрузить профиль Chrome с помощью Selenium WebDriver с помощью java
  • TestNG Внутренняя ошибка во время запуска
  • Selenium Error - HTTP-запрос на удаленный WebDriver истекает через 60 секунд
  • Разница между webdriver.firefox.marionette и webdriver.gecko.driver
  • Давайте будем гением компьютера.