繁体   English   中英

如何使用 Capybara 和 ChromeDriver 模拟在输入字段中按 Enter 键?

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM