2

我的应用程序中有 JavaScript,当用户按 Ctrl-S 或 Cmd-S 时提交表单。我想为此使用 RSpec、Capybara 和 Capybara Webkit 编写一个自动化测试。我不认为我可以让 Capybara 执行 JavaScript 来触发 Ctrl-S/Cmd-S,因为出于安全考虑,Chrome 中的 JavaScript 通常不允许这样做。我看到Seleniumpage.driver.browser.action.key_down/key_up方法可用。Capybara Webkit 有类似的东西吗?如果没有,我如何在测试中将 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_down(:control).send_keys('s').key_up(:control).perform没有做任何事情——页面在 Firefox 中加载,但只是坐在那里。这是带有 selenium-webdriver 2.35.1 的 OS X 上的 Firefox 19。

有关如何使用 Selenium 或 Capybara Webkit 使其在 Firefox 或 Chrome 中工作的任何建议?

4

1 回答 1

0

我正在尝试使用 Capybara 和 SitePrism 在 Chrome 中做类似的事情。这实际上在 Firefox 中对我有用:

page.element.native.send_keys :command, 'a'

所以我建议试试这个

builder.native.send_keys :control, 's'
于 2014-10-13T16:03:21.607 回答