[英]How do I simulate hitting enter in an input field with Capybara and ChromeDriver?
我有以下帮助方法可以将字符串输入到输入字段中并按下回车键,但似乎从未按下回车键。 我看到输入字段中输入的字符串,但在按 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 没有对 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>'
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.