selenium 2.4.0,如何检查是否存在警报

时间:2011-08-16 10:27:34

标签: ruby selenium

在使用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检查是否存在警报?

5 个答案:

答案 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