我的应用程序中有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发送到浏览器?
编辑:我也无法使用常规的Selenium驱动程序与Firefox一起工作:
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中加载但只是坐在那里。这是OS X上的Firefox 19和selenium-webdriver 2.35.1。
有关如何使用Selenium或Capybara Webkit在Firefox或Chrome中实现此功能的任何建议吗?
答案 0 :(得分:0)
我尝试使用Capybara和SitePrism在Chrome中做类似的事情。这实际上适用于我在Firefox中:
page.element.native.send_keys :command, 'a'
所以我建议尝试这个
builder.native.send_keys :control, 's'