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

Ruby selenium 2.4.0,如何检查是否存在警报,ruby,selenium,Ruby,Selenium,在使用selenium 2.4.0之前,我使用了以下代码: alert = page.driver.browser.switch_to.alert if alert.text .... end Selenium 2.4.0包含更改“*在没有警报的情况下将开关_提升为.alert”,因此我得到了一个没有警报的异常(Selenium::WebDriver::Error::NoAlertOpenError)异常 如何使用selenium web driver 2.4.0检查是否存在警报?这里有一

在使用selenium 2.4.0之前,我使用了以下代码:

alert = page.driver.browser.switch_to.alert
if alert.text
  ....
end
Selenium 2.4.0包含更改“*在没有警报的情况下将开关_提升为.alert”,因此我得到了一个
没有警报的异常(Selenium::WebDriver::Error::NoAlertOpenError)
异常

如何使用selenium web driver 2.4.0检查是否存在警报?

这里有一个选项:

driver.switch_to.alert.accept rescue Selenium::WebDriver::Error::NoAlertOpenError
如果存在警报,则单击警报上的“确定”,否则它将正常(无声)失败


没有直接的方法来检查是否存在警报。使用上述方法,您可以检查是否存在警报。一旦警报出现,它就会从while循环中出来

我在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
我曾经

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

对于selenium webdriver 3.142.3

不幸的是,这是我用水豚做这件事的最好方法。但是我不得不稍微调整一下:page.driver.browser.switch_to.alert.accept rescue Selenium::WebDriver::Error::noalertpresenter非常感谢大家!!!我今天花了几个小时试图运行我的规范,这就成功了:)这,加上@jackocnr的建议,应该是IMO接受的答案。我应该补充:这里的“会话”代表水豚会话,虽然很明显,如果您关闭“会话”部分,这只适用于Selenium。对于所有Selenium用户:您可以使用
driver。切换到.alert
,其中
driver
Selenium::WebDriver
对象。
WebDriverWait wait = new WebDriverWait(driver, 18);
wait.until(ExpectedConditions.alertIsPresent());
driver.switch_to.alert.accept rescue 
Selenium::WebDriver::Error::NoAlertOpenError