Capybara-webkit を使用して、ヘッドレス モードで簡単な Google 検索テストを実行しようとしています。
env.rb ファイルのようにドライバーを設定しました。
Capybara.default_driver = :webkit
Capybara.current_driver = :webkit
Capybara.javascript_driver = :webkit
また、機能ファイルには、入力を検索し、結果に期待される出力が含まれているかどうかを検証する簡単なシナリオの概要が含まれています。
Given User opens the google page
When she searches for "<input>"
Then verify that the result has "<output>"
Examples:
|input | output |
|Agile Samurai author name|Jonathan Rasmusson|
|Eloquent Ruby author name|Russ Olsen |
ステップ定義では、Googleページにアクセスしてテキストボックスに入力し、検索ボタンをクリックします。
Given /^User opens the google page$/ do
visit "http://google.com"
end
When /^she searches for "(.*?)"$/ do |search_query|
fill_in "gbqfq", :with => search_query
click_button "gbqfba"
end
Then /^verify that the result has "(.*?)"$/ do |output|
should have_content output
end
これらのテストを実行すると、次のエラーが表示されます。
フィールド "gbqfq" が見つかりません (Capybara::ElementNotFound)
ただし、ドライバーをセレンに変更すると、次のようになります。
Capybara.default_driver = :selenium
Capybara.current_driver = :selenium
Capybara.javascript_driver = :selenium
次に、テストが実行され、すべてのステップがパスします。
ヘッドレス モードでは、要素は別の方法で検出されますか? 私のアプローチは間違っていますか?ブラウザー モード (Firefox インスタンスを開く) で正常に動作するのに、ヘッドレス モードで要素が見つからない理由を理解できません。
私はこの分野の初心者なので、どんな助けでも大歓迎です。前もって感謝します。