2

アプリケーションに、ユーザーが 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でこれを機能させる方法に関する提案はありますか?

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 に答える