入力フィールドに文字列を入力してEnterキーを押す次のヘルパーメソッドがありますが、Enterキーが押されていないようです。入力フィールドに文字列が入力されていますが、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)
エラーは発生しませんが、Enterキーは押されません。
find('#q_name').native.send_keys(:return)
私のために働く。私は自分のフィールドに名前やIDを持っていませんが、タイプは入力されているので、次のようなものを使用しました
find('.myselector_name>input').native.send_keys(:return)
完璧に動作します!
最近(Capybaraバージョン2.5以降)、<enter>
キーは次のようになります。
find('.selector').set("text\n")
\n
はここで非常に重要なビットです。
通常、page.execute_scriptを実行すると、ページコンソールで実行した場合と同じ結果が得られます。コンソールで手動で実行してみて、期待どおりの結果が得られるかどうかを確認してください。それは通常私がしていることです..必要なjsコードをブラウザーのコンソールウィンドウで作成し、execute_scriptを使用してcapybaraコードに貼り付けます。
Capybaraはsend_keysタイプのイベントをネイティブでサポートしていません。あなたはそれを行うためにSeleniumに行くことができるかもしれません、またはあなたはこの宝石を試すことができます https://github.com/markgandolfo/send-keys
わたしにはできる
page.execute_script("$('form.css-class/#form_id').submit()")
@Page.selector.send_keys :return
selector
はページオブジェクト要素の要素:selector, '<css selector>'