アプリケーションに、ユーザーが Ctrl-S または Cmd-S を押したときにフォームを送信する JavaScript があります。RSpec、Capybara、および Capybara Webkit を使用して、この自動テストを作成したいと考えています。カピバラに 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でこれを機能させる方法に関する提案はありますか?