Eri*_* M. 57 javascript jquery ruby-on-rails capybara selenium-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
Run Code Online (Sandbox Code Playgroud)
编辑:
我也试过以下无济于事:
find('#q_name').native.send_keys(:return)
find('#q_name').native.send_keys(:enter)
Run Code Online (Sandbox Code Playgroud)
它们不会导致任何错误,但仍然没有按下回车键.
Mys*_*Man 76
find('#q_name').native.send_keys(:return)
Run Code Online (Sandbox Code Playgroud)
适合我.我的字段没有名称或ID,但输入类型,所以我使用了类似的东西
find('.myselector_name>input').native.send_keys(:return)
Run Code Online (Sandbox Code Playgroud)
工作得很好!
Paw*_*cki 19
这些天(Capybara版本2.5+)您可以<enter>
通过以下方式模拟密钥:
find('.selector').set("text\n")
Run Code Online (Sandbox Code Playgroud)
这\n
是非常重要的一点.
通常,当您运行page.execute_script时,您将获得与在页面控制台中运行该结果相同的结果.尝试在控制台中手动运行它,看看你是否得到了预期的结果.这通常就是我所做的..在浏览器控制台窗口中制作所需的js代码,并在使用execute_script时将其粘贴到capybara代码中.
Capybara 没有对 send_keys 类型事件的原生支持。您可能可以使用 selenium 来执行此操作,或者您可以尝试使用此 gem https://github.com/markgandolfo/send-keys