undefined method `accept_js_confirms' for #<Selenium::WebDriver::...>

環境


事象

モーダル内の"OK"ボタンを押そうと以下のように記述したが、JSを扱うcapybara-webkitがインストールされていないため、エラーが吐かれた。

    # OKボタンを押す
    page.driver.browser.accept_js_confirms


エラー内容

Failures:

  1) アカウント登録フロー ログインログアウト
Failure/Error: page.driver.browser.accept_js_confirms
     NoMethodError:
       undefined method `accept_js_confirms' for #<Selenium::WebDriver::Driver:0x007fb827d43b68>


対策

まずは、Capybara-webkitのインストールを行う。

hrt0kmt.hatenablog.com

その後、以下のようにテストスクリプトの記述を変更する。

# 以下の記述はコメントアウト
# page.driver.browser.accept_js_confirms

# モーダル内のOKボタンを押す
page.driver.browser.switch_to.alert.accept


結果

アカウント登録フロー
  ログインログアウト

Top 1 slowest examples (10.24 seconds, 100.0% of total time):
  アカウント登録フロー ログインログアウト
    10.24 seconds ./test.rb:23

Finished in 10.24 seconds (files took 1.6 seconds to load)
1 example, 0 failures

Randomized with seed 11438

解決。


参考サイト

http://stackoverflow.com/questions/6922241/rspec-capybara-how-to-click-on-alert-box