我的应用程序中有 JavaScript,当用户按 Ctrl-S 或 Cmd-S 时提交表单。我想为此使用 RSpec、Capybara 和 Capybara Webkit 编写一个自动化测试。我不认为我可以让 Capybara 执行 JavaScript 来触发 Ctrl-S/Cmd-S,因为出于安全考虑,Chrome 中的 JavaScript 通常不允许这样做。我看到Selenium有page.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 中工作的任何建议?