我有以下辅助方法将字符串输入输入字段并按下回车键,但似乎从未按下回车键。我看到输入字段中输入了字符串,但是按下回车键时发生的事件从未发生过。
我已经在实际的浏览器中测试过回车键正确触发了预期的事件。我不确定我错过了什么。
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)
工作得很好!
These days (Capybara version 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>'
像往常一样使用
fill_in
,但将换行符"\n"
附加到with:
值。 with:
值必须用双引号引起来,而不是单引号。这将触发表单提交:
fill_in "q_name", with: "hello world\n"