我正在使用Capybara和Selenium为我正在编写的Cucumber功能驱动Firefox浏览器。 (不是黄瓜问题,但是当它发生时,我正在使用Cucumber。)我有一步:
Then /^I should see a confirmation of the change$/ do
expect{page.driver.browser.switch_to.alert}.not_to raise_exception
end
(真实的实现测试了异常的类型并使用一些魔法来确定我看到的确认具有正确的文本。为简洁起见,该代码被排除在外。)
我的问题是,为了测试是否存在模态对话框,我可能需要引发异常。从哲学上讲,这是一个问题,因为这不是例外行为。这很简单。
Selenium中有一个#is_alert_present
方法,但似乎没有任何方法可以访问它:
page.driver
给了我一个Capybara::Selenium::Driver
。 page.driver.browser
给了我一个Selenium::WebDriver::Driver
(在我的例子中,它是一个Firefox驱动程序)。 Selenium::Client::Base
模块的Selenium::Client::GeneratedDriver
,该模块定义了#is_alert_present
如果没有引发异常,如何使用Capybara和Selenium测试是否存在JavaScript警报?仅提供Selenium::WebDriver::Driver
,是否有办法访问Selenium::Client:Base
?
答案 0 :(得分:0)
嗯 我会试试这个:
WebDriverWait wait = new WebDriverWait(driver, 300 /*timeout in seconds*/);
if(wait.until(ExpectedConditions.alertIsPresent())==null)
return false;
else
return true;
ExpectedConditions
是一个包装类,它实现了ExpectedCondition
接口中定义的有用条件。