我正在使用 Capybara 和 Selenium 为我正在编写的 Cucumber 功能驱动 Firefox 浏览器。(不是 Cucumber 问题,但碰巧我正在使用 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
模块的 a ,该模块定义#is_alert_present
在不引发异常的情况下,如何使用 Capybara 和 Selenium 测试 JavaScript 警报是否存在?仅给定 a Selenium::WebDriver::Driver
,有没有办法访问 a Selenium::Client:Base
?