Ruby 在Capybara Webkit测试中将Ctrl-S发送到浏览器

Ruby 在Capybara Webkit测试中将Ctrl-S发送到浏览器,ruby,testing,rspec,webkit,capybara,Ruby,Testing,Rspec,Webkit,Capybara,我的应用程序中有JavaScript,当用户点击Ctrl-S或Cmd-S时提交表单。我想使用RSpec、Capybara和Capybara Webkit为此编写一个自动测试。我不认为我可以让Capybara执行JavaScript来触发Ctrl-S/Cmd-S,因为在Chrome中JavaScript通常不允许这样做,因为这是一个安全问题。我看到有page.driver.browser.action.key\u down/key\u up方法可用。水豚网络工具包有什么相似之处吗?如果没有,我如何

我的应用程序中有JavaScript,当用户点击Ctrl-S或Cmd-S时提交表单。我想使用RSpec、Capybara和Capybara Webkit为此编写一个自动测试。我不认为我可以让Capybara执行JavaScript来触发Ctrl-S/Cmd-S,因为在Chrome中JavaScript通常不允许这样做,因为这是一个安全问题。我看到有
page.driver.browser.action.key\u down
/
key\u up
方法可用。水豚网络工具包有什么相似之处吗?如果没有,我如何在测试中将Ctrl-S和Cmd-S发送到浏览器

编辑:我也无法在Firefox中使用常规的Selenium驱动程序:

describe 'edit a template and hit Ctrl-S', js: true do
  render_views

  it 'saves the template' do
    visit my_path
    page.execute_script("$('#hidden_textarea').val('Fabulous new content')")
    builder = page.driver.browser.action
    builder.key_down(:control).send_keys('s').key_up(:control).perform
    expect(page).to have_text('Record was saved.')
    expect(page).to have_text('Fabulous new content')
  end
end
它看起来像是
builder.key\u down(:control).send\u keys('s').key\u up(:control).perform没有做任何事情--页面在Firefox中加载,只是放在那里。这是在OS X上的Firefox 19和selenium webdriver 2.35.1上实现的


关于如何在Firefox或Chrome中使用Selenium或Capybara Webkit实现这一点,您有什么建议吗?

我正在尝试使用Capybara和SitePrism在Chrome中实现类似的功能。但这在Firefox中对我来说确实有效:

page.element.native.send_keys :command, 'a'
所以我建议试试这个

builder.native.send_keys :control, 's'

顺便说一句,我要测试的JavaScript确实有效。当Selenium打开Firefox时,如果我等待一秒钟并亲自点击Ctrl-S,表单将按预期提交,测试通过。