如何模拟在Capybara和ChromeDriver的input字段中input?

我有以下帮助方法来input一个string到input字段,然后按回车键,但似乎回车键从来没有按下。 我看到input字段中input的string,但敲击input时发生的事件从未发生过。

我已经在实际的浏览器中testing过了,input键正确地触发了预期的事件。 我不知道我错过了什么。

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) 

他们不会造成任何错误,但仍然没有input按键。

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

为我工作。 我没有一个名称或ID为我的领域,但types是input,所以我用了类似的东西

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

工作非常好!

这些天(水豚版本2.5+),您可以按照以下方式模拟<enter>键:

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

\n在这里是非常重要的一点。

通常,当您运行page.execute_script时,您会得到与在页面控制台中运行相同的结果。 尝试在控制台中手动运行,看看你是否得到预期的结果。 这通常是我做的..在浏览器控制台窗口中制作所需的js代码,并在工作时使用execute_script将其粘贴到capybara代码中。

水豚对send_keystypes事件没有本地支持。 你可能可以下到selenium做,或者你可以试试这个gemhttps://github.com/markgandolfo/sendkeys

这个对我有用

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

@Page.selector.send_keys :return

这适用于我,其中selector是您的页面对象元素中的元素:selector, '<css selector>'