69

入力フィールドに文字列を入力してエンターキーを押す次のヘルパーメソッドがありますが、エンターキーが押されていないようです。入力フィールドに入力された文字列が表示されますが、Enter キーを押したときに発生するイベントは発生しませんでした。

Enter キーが期待されるイベントを正しく起動することを実際のブラウザーでテストしました。何が欠けているのかわかりません。

def fill_and_trigger_enter_keypress(selector, value)
  page.execute_script %Q(
                          var input = $('#{selector}');
                          input.val('#{value}');
                          input.trigger("keypress", [13]);
                         )
end

編集:

また、次のことを試してみましたが、役に立ちませんでした。

find('#q_name').native.send_keys(:return)
find('#q_name').native.send_keys(:enter)

エラーは発生しませんが、まだエンターキーは押されていません。

4

6 に答える 6

89
find('#q_name').native.send_keys(:return)

私のために働きます。フィールドの名前やIDはありませんが、タイプは入力であるため、次のようなものを使用しました

find('.myselector_name>input').native.send_keys(:return)

完全に正常に動作します!

于 2012-07-25T23:28:59.143 に答える
30

最近 (Capybara バージョン 2.5+)<enter>では、次の方法でキーをシミュレートできます。

find('.selector').set("text\n")

(\n改行) は、ここで非常に重要な部分です。

于 2016-12-23T16:21:54.860 に答える
6

通常、page.execute_script を実行すると、ページ コンソールで実行した場合と同じ結果が得られます。コンソールで手動で実行してみて、期待どおりの結果が得られるかどうかを確認してください。それは通常私がしていることです..ブラウザのコンソールウィンドウで必要な js コードを作成し、それが動作しているときに execute_script を使用してカピバラコードに貼り付けます。

于 2012-06-03T01:26:32.653 に答える
5

Capybaraは、send_keysタイプのイベントをネイティブでサポートしていません。あなたはそれをするためにセレンに行くことができるかもしれません、あるいはあなたはこの宝石を試すことができますhttps://github.com/markgandolfo/send-keys

于 2012-06-03T00:45:08.583 に答える
1

わたしにはできる

page.execute_script("$('form.css-class/#form_id').submit()")
于 2014-02-04T09:49:22.093 に答える