質問

私はキュウリやカピバラとRuby on Railsでを使用しています。

どのように私は(「あなたはよろしいですか?」)、単純な確認コマンドをテストするに行くか?

また、どこ私は、この問題に関する詳細なドキュメントを見つけることができる?

役に立ちましたか?

解決

残念ながら、カピバラにそれを行うための方法はありませんように思えます。しかし、あなたはセレンドライバー(そしておそらくJavaScriptをサポートする他のドライバ)を使用してテストを実行している場合、あなたはそれをハックすることができます。ただ、確認ダイアログをもたらすアクションを実行する前に、常にtrueを返すようにconfirmメソッドをオーバーライドします。その方法は、ダイアログは表示されませんし、ユーザーがOKボタンを押したかのように、あなたのテストを続行することができます。あなたが逆をシミュレートしたい場合は、単にfalseを返すようにそれを変更します。

page.evaluate_script('window.confirm = function() { return true; }')
page.click('Remove')

他のヒント

セレンドライバは現在、

こののをサポートしています

あなたはこのようにそれにアクセスしますカピバラよります:

page.driver.browser.switch_to.alert.accept

または

page.driver.browser.switch_to.alert.dismiss

または

 page.driver.browser.switch_to.alert.text

私は/features/step_definitions/web_steps.rbでこれらの2つのWeb手順を実装しました

When /^I confirm popup$/ do
  page.driver.browser.switch_to.alert.accept    
end

When /^I dismiss popup$/ do
  page.driver.browser.switch_to.alert.dismiss
end

カピバラの現在のリリースのためにこれを更新します。ほとんどのカピバラドライバ今日は、モーダルAPIをサポートしています。確認モーダルを受け入れるには、あなたがどうなる

accept_confirm do  # dismiss_confirm if not accepting
  click_link 'delete'  # whatever action triggers the modal to appear
end

これは

のようなものとキュウリに使用することができます
When /^(?:|I )press "([^"]*)" and confirm "([^"]*)"$/ do |button, msg|
  accept_confirm msg do
    click_button(button)
  end
end

という名前のボタンをクリックし、テキストマッチングMSG

と確認ボックスを受け入れます

カピバラ、WebKitののドライバは、同様に、これをサポートしています。

Scenario: Illustrate an example has dialog confirm with text
    #     
    When I confirm the browser dialog with tile "Are you sure?"
    #
=====================================================================
my step definition here:

And(/^I confirm the browser dialog with title "([^"]*)"$/) do |title|
  if page.driver.class == Capybara::Selenium::Driver
    page.driver.browser.switch_to.alert.text.should eq(title)
    page.driver.browser.switch_to.alert.accept
  elsif page.driver.class == Capybara::Webkit::Driver
    sleep 1 # prevent test from failing by waiting for popup
    page.driver.browser.confirm_messages.should eq(title)
    page.driver.browser.accept_js_confirms
  else
   raise "Unsupported driver"
 end
end

のセレンとのWebKitにポップアップを操作するためのいくつかの便利な便利なメソッドが追加されます。

運と上記の答えをしようとしました。最後に、これは私のために働いてます:

@browser.alert.ok
scroll top