我有以下帮助方法将字符串输入到输入字段并按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)
它们不会导致任何错误,但仍然没有按下回车键。
答案 0 :(得分:75)
find('#q_name').native.send_keys(:return)
适合我。我没有我的字段的名称或ID,但输入的类型,所以我使用了类似
的东西find('.myselector_name>input').native.send_keys(:return)
完美无缺!
答案 1 :(得分:18)
这些天(Capybara版本2.5+)您可以通过以下方式模拟<enter>
密钥:
find('.selector').set("text\n")
\n
是非常重要的一点。
答案 2 :(得分:6)
通常,当您运行page.execute_script时,您将获得与在页面控制台中运行该结果相同的结果。尝试在控制台中手动运行它,看看你是否得到了预期的结果。这通常就是我所做的..在浏览器控制台窗口中制作所需的js代码,并在使用execute_script时将其粘贴到capybara代码中。
答案 3 :(得分:4)
Capybara对send_keys类型事件没有本机支持。你或许可以去硒做这个,或者你可以尝试这个宝石https://github.com/markgandolfo/send-keys
答案 4 :(得分:1)
它对我有用
page.execute_script("$('form.css-class/#form_id').submit()")
答案 5 :(得分:0)
@Page.selector.send_keys :return
这适用于我,其中selector
是页面对象中的元素
元素:selector, '<css selector>'