有没有办法使用Capybara向Webkit发送按键?

pup*_*eno 34 webkit ruby-on-rails keypress capybara

我需要在使用Capybara和WebKit的集成测试中向Web应用程序发送一些按键.使用Selenium(WebDriver和Firefox)我可以这样实现:

find("#element_id").native.send_keys :tab
Run Code Online (Sandbox Code Playgroud)

但是WebKit的本机元素节点没有send_keys方法.实际上,WebKit中的native返回了一个包含数字的字符串.是否有另一种方法可以向WebKit发送击键?甚至可能使用JavaScript/jQuery的一些解决方法?

d_r*_*ail 18

我一直试图实现Marc的答案,但没有任何成功,但我从类似的问题中找到了一些帮助:capybara:用终止输入键填写表单字段值.显然有一个来自水豚的拉动请求似乎解决了这个问题.

对我有用的是:

before { fill_in "some_field_id", with: "\t" }
Run Code Online (Sandbox Code Playgroud)

我的示例删除了字段中的文本然后按下Tab.填写字段'foobar',替换"\t""foobar\t".您还可以使用"\n"Enter密钥.

对于您的示例,您可以使用:

find("#element_id").set("\t")
Run Code Online (Sandbox Code Playgroud)


Mar*_*nez 14

你可以这样做:

keypress_script = "var e = $.Event('keydown', { keyCode: #{keycode} }); $('body').trigger(e);"
page.driver.browser.execute_script(keypress_script)
Run Code Online (Sandbox Code Playgroud)


Hen*_*k N 13

这对我使用Poltergeist来触发星号键:

find("body").native.send_key("*")
Run Code Online (Sandbox Code Playgroud)

我对其他解决方案没有运气; 甚至不是Syn.

这是为了触发角度热键事件.


Osm*_*ond 5

现在,从Capybara-webkit 1.9.0开始,您可以使用send_keys发送回车键和其他回车键:

find("textarea#comment").send_keys(:enter)
Run Code Online (Sandbox Code Playgroud)

来源:https : //github.com/thoughtbot/capybara-webkit/issues/191#issuecomment-228758761

Capybara API文件:http ://www.rubydoc.info/github/jnicklas/capybara/Capybara%2FNode%2FElement%3Asend_keys