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

Selenium 2.4.0, как проверить наличие предупреждения

До использования selenium 2.4.0 у меня был следующий код:

alert = page.driver.browser.switch_to.alert
if alert.text
  ....
end

Selenium 2.4.0 содержит изменение "* Raise in switch_to.alert, когда нет предупреждения". Поэтому я получаю исключение No alert is present (Selenium::WebDriver::Error::NoAlertOpenError).

Как проверить наличие предупреждения с помощью selenium-web-драйвера 2.4.0?

4b9b3361

Ответ 1

Вот один из вариантов:

driver.switch_to.alert.accept rescue Selenium::WebDriver::Error::NoAlertOpenError

При нажатии кнопки "ОК" появится предупреждение, если он присутствует, иначе он будет изящно (беззвучно).

Ответ 2

Я реализовал метод обработки этого в Ruby, который, по моему мнению, довольно чистый:

def alert_present?
  begin
    session.driver.browser.switch_to.alert
    puts "Alert present! Switched to alert."
    true
  rescue
    puts "No alert present."
    return false
  end
end

Ответ 3

WebDriverWait wait = new WebDriverWait(driver, 18);
wait.until(ExpectedConditions.alertIsPresent());

Ответ 4

status = true
while (status)
    alert = driver.switch_to.alert rescue "exception happened"
    if (alert == "exception happened")
        status = true
        alert = "nothing happened"
    else
        status = false
    end
end

Нет прямого метода проверки наличия предупреждения. Используя вышеуказанный метод, вы можете проверить наличие предупреждения. Он выйдет из цикла while, когда присутствует предупреждение.