簡體   English   中英

如何使用 Capybara 和 ChromeDriver 模擬在輸入字段中按 Enter 鍵?

[英]How do I simulate hitting enter in an input field with Capybara and ChromeDriver?

我有以下幫助方法可以將字符串輸入到輸入字段中並按下回車鍵,但似乎從未按下回車鍵。 我看到輸入字段中輸入的字符串,但在按 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)

它們不會導致任何錯誤,但仍然沒有按下回車鍵。

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 沒有對 send_keys 類型事件的原生支持。 您可能可以使用 selenium 來執行此操作,或者您可以嘗試使用此 gem https://github.com/markgandolfo/send-keys

這個對我有用

page.execute_script("$('form.css-class/#form_id').submit()")

@Page.selector.send_keys :return

這對我有用,其中selector是頁面對象元素中的元素:selector, '<css selector>'

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM