CapybaraでElementNotFoundと出た時の対処法


RSpecでよく使用されるCapybara
ブラウザでの操作やエミュレーターでの操作を全てRuby上で書けるし代行してくれる優れものなのですが、feature Specで決まって

capybara::ElementNotFound:Unable to find visible field

というエラーが発生するためそれの原因と解決策を忘れない様書いておきます
今回はウェブブラウザーを使用します
どのブラウザーでもいいですがGoogle Chromを使用していきます

どういった状況で発生するのか

fill_inでどの要素にどの値を入れてほしいかを教えたら

./spec/features/sign_up_spec.rb
fill_in "email", with: "[email protected]"

capybaraさんから
そんな要素ないから値が入らないです
と怒られました

 Failure/Error: fill_in "email",  with: "[email protected]"

エラー内容的には、「emailってメソッドないんですけど間違えてないですか?」と教えてくれます
なので修正方法としてはここを直していく感じです

解決法

rails serverを開き、Capybaraでtestしたい場所(サイト)まで移動します
そこでMacなら「option + command + C」を押して開発者ツールを起動します
testしたいところにカーソルを近づけると・・・

こんな感じで表示されます(今回はemailを入れるinputタグを見本としています)
そしてここをクリックすると

こうやってHTML形式でinputの詳細が出てくるので、その中の

name = "session[email]"

をCapybaraのfill_inに読ませればうまく動作してくれると思います