5

送信ボタンのないコメントフォームをテストするためにCucumberを使用しています。セレンにはsend_keyというメソッドがあることがわかりました。これにより、理論的には次のことが可能になります。

find_field('my-field').native.send_key(:enter)

しかし、テストを実行すると、次のようになります。

undefined method `send_key' for #<Nokogiri::XML::Element:0x007f874b361828> (NoMethodError)

私が間違っていることの手がかりではありません。何か案は?

4

3 に答える 3

3

メソッド:rack_testにアクセスするには、Capybaraのドライバーではなく、Selenium ドライバーを使用する必要があります。send_keys

  • selenium-webdriverbundler を使用している場合は、gem をインストールして gem ファイルに追加します。
  • :js => trueSelenium ドライバーで実行されるように、テストを使用してマークします。

:rack_testCapybara はデフォルトでドライバーを使用するため、エラーが発生します。要素を呼び出すnativeと、ドライバー固有のメソッドにアクセスします。:rack_testドライバー要素は としてネイティブに実装されているNokogiri::XML::Elementため、send_keysメソッドが存在せず、このエラーが発生します。

于 2014-10-30T09:59:33.797 に答える
0

xpathで試してください

within(:xpath, "//form[@id='the_form']") do
  locate(:xpath, "//input[@name='the_input']").set(value)
  locate(:xpath, "//input[@name='the_input']").node.send_keys(:return)
end
于 2013-02-18T22:58:23.067 に答える
0

隠しボタンを設定することもできます。カピバラはそれを見てクリックすることができます。

<%= form.submit "OK", style: "display: none;" %>

次に、テストで:

Capybara.ignore_hidden_elements = false
click_on "OK"
于 2021-09-17T22:29:13.030 に答える