在使用selenium 2.4.0之前,我有以下代码:
alert = page.driver.browser.switch_to.alert
if alert.text
....
end
Selenium 2.4.0包含更改“*当没有警报时在switch_to.alert中提升。”,所以我得到No alert is present (Selenium::WebDriver::Error::NoAlertOpenError)
例外。
如何使用selenium-web-driver 2.4.0检查是否存在警报?
答案 0 :(得分:22)
这是一个选项:
driver.switch_to.alert.accept rescue Selenium::WebDriver::Error::NoAlertOpenError
如果存在警报,则会在警报上单击“确定”,否则它将正常(无声地)失败。
答案 1 :(得分:8)
我在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
答案 2 :(得分:7)
WebDriverWait wait = new WebDriverWait(driver, 18);
wait.until(ExpectedConditions.alertIsPresent());
答案 3 :(得分:1)
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循环中出现
答案 4 :(得分:0)
我用过
driver.switch_to.alert.accept rescue
Selenium::WebDriver::Error::NoAlertOpenError
对于selenium-webdriver 3.142.3