我有以下帮助方法将字符串输入到输入字段并按回车键,但似乎从未按下回车键。我看到输入字段中输入了字符串,但是在输入时发生的事件从未发生过。
我已经在一个实际的浏览器中测试了 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 代码中。
Capybara 没有对 send_keys 类型事件的原生支持。您也许可以使用 selenium 来完成它,或者您可以试试这个 gem https://github.com/markgandolfo/send-keys
这个对我有用
page.execute_script("$('form.css-class/#form_id').submit()")
$('form.css-class/#form_id')
不是有效的 jQuery - 运行它会引发错误。
$('form.css-class#form_id')
@Page.selector.send_keys :return
这对我有用,其中 selector
是您的页面对象元素中的元素 :selector, '<css selector>'
NoMethodError: undefined method
send_keys' for "5":String` 错误。