私は 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
#is_alert_present
例外を発生させずに、Capybara と Selenium を使用して JavaScript アラートの存在をテストするにはどうすればよいですか? のみが与えられた場合、Selenium::WebDriver::Driver
にアクセスする方法はありますSelenium::Client:Base
か?