69

我有以下帮助方法将字符串输入到输入字段并按回车键,但似乎从未按下回车键。我看到输入字段中输入了字符串,但是在输入时发生的事件从未发生过。

我已经在一个实际的浏览器中测试了 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 将其粘贴到 capybara 代码中。

于 2012-06-03T01:26:32.653 回答
5

Capybara 没有对 send_keys 类型事件的原生支持。您可能可以使用 selenium 来执行此操作,或者您可以尝试这个 gem 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 回答
0

@Page.selector.send_keys :return

这对我有用,selector页面对象元素中的元素在哪里:selector, '<css selector>'

于 2016-08-09T13:47:23.070 回答