在不引发异常的情况下,如何使用Capybara和Selenium测试JavaScript警报的存在?
我正在使用Capybara和Selenium为我正在编写的Cucumber功能驱动Firefox浏览器。(不是黄瓜问题,但碰巧我用的是黄瓜。)我有一个步骤:在不引发异常的情况下,如何使用Capybara和Selenium测试JavaScript警报的存在?,selenium,capybara,Selenium,Capybara,我正在使用Capybara和Selenium为我正在编写的Cucumber功能驱动Firefox浏览器。(不是黄瓜问题,但碰巧我用的是黄瓜。)我有一个步骤: Then /^I should see a confirmation of the change$/ do expect{page.driver.browser.switch_to.alert}.not_to raise_exception end (真正的实现测试异常的类型,并使用一些魔术来确定我看到的确认是否有正确的文本。为简洁起
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_
方法,但似乎没有任何方法可以访问它:
给了我一个提示李>page.driver
为我提供了一个page.driver.browser
(在我的例子中,它是一个Firefox驱动程序)李>Selenium::WebDriver::driver
- 这两个对象似乎都无法访问
,该模块包括Selenium::Client::Base
模块,该模块定义Selenium::Client::GeneratedDriver
Selenium::WebDriver::Driver
,是否有方法访问Selenium::Client:Base
?hmmm
我想试试这个:
WebDriverWait wait = new WebDriverWait(driver, 300 /*timeout in seconds*/);
if(wait.until(ExpectedConditions.alertIsPresent())==null)
return false;
else
return true;
ExpectedConditions
是一个包装类,它实现了ExpectedCondition
接口中定义的有用条件