如何模拟在Capybara和ChromeDriver的input字段中input?
我有以下帮助方法来input一个string到input字段,然后按回车键,但似乎回车键从来没有按下。 我看到input字段中input的string,但敲击input时发生的事件从未发生过。
我已经在实际的浏览器中testing过了,input键正确地触发了预期的事件。 我不知道我错过了什么。
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)
他们不会造成任何错误,但仍然没有input按键。
find('#q_name').native.send_keys(:return)
为我工作。 我没有一个名称或ID为我的领域,但types是input,所以我用了类似的东西
find('.myselector_name>input').native.send_keys(:return)
工作非常好!
这些天(水豚版本2.5+),您可以按照以下方式模拟<enter>
键:
find('.selector').set("text\n")
\n
在这里是非常重要的一点。
通常,当您运行page.execute_script时,您会得到与在页面控制台中运行相同的结果。 尝试在控制台中手动运行,看看你是否得到预期的结果。 这通常是我做的..在浏览器控制台窗口中制作所需的js代码,并在工作时使用execute_script将其粘贴到capybara代码中。
水豚对send_keystypes事件没有本地支持。 你可能可以下到selenium做,或者你可以试试这个gemhttps://github.com/markgandolfo/sendkeys
这个对我有用
page.execute_script("$('form.css-class/#form_id').submit()")
@Page.selector.send_keys :return
这适用于我,其中selector
是您的页面对象元素中的元素:selector, '<css selector>'