Ответ 1
Вот один из вариантов:
driver.switch_to.alert.accept rescue Selenium::WebDriver::Error::NoAlertOpenError
При нажатии кнопки "ОК" появится предупреждение, если он присутствует, иначе он будет изящно (беззвучно).
До использования 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?
Вот один из вариантов:
driver.switch_to.alert.accept rescue Selenium::WebDriver::Error::NoAlertOpenError
При нажатии кнопки "ОК" появится предупреждение, если он присутствует, иначе он будет изящно (беззвучно).
Я реализовал метод обработки этого в 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
WebDriverWait wait = new WebDriverWait(driver, 18);
wait.until(ExpectedConditions.alertIsPresent());
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, когда присутствует предупреждение.