2011-07-26 5 views
1

シナリオ概要が3つあり、Firefoxでシナリオ1を実行し、ブラウザを閉じてからシナリオ2をChromeで実行し、ブラウザを閉じてからシナリオを実行する3とFirefox。 各シナリオの後、キュウリ/カピバラでブラウザを終了/終了する方法はありますか?シナリオの後にキュウリ/カピバラが別のブラウザを閉じて開くようにする

これまでのところ、私が登録した2つのドライバ、ChromeのFirefoxのための1と1:

次にhooks.rbで、私は 'カスタム' タグ "@alternate_browser"

Before('@alternate_browser') do 
    driver = Capybara.current_driver 
    if driver == :selenium_firefox 
    Capybara.current_driver = :selenium_chrome 
    else 
    Capybara.current_driver = :selenium_firefox 
    end 
end 
を使用してい
Capybara.register_driver :selenium_firefox do |app| 
    Capybara::Driver::Selenium.new(app, :browser => :firefox) 
end 

Capybara.register_driver :selenium_chrome do |app| 
    Capybara::Driver::Selenium.new(app, :browser => :chrome) 
end 

各シナリオの後にブラウザを強制的に閉じる方法はありますか?

編集:私が試した:

page.evaluate_script("window.close()") 
page.execute_script("window.close()") 

をしかし、両方のステートメントは効果がありませんでした。

答えて

0

これはあなたがすべきことです。

  • ウィンドウを閉じないでください。
  • 明示的なブラウザタグに変更します(@ Firefoxの、クロム@)

私はそれを試していないが、これは動作するはずです。

Capybara.register_driver :selenium_firefox do |app| 
    Capybara::Driver::Selenium.new(app, :browser => :firefox) 
end 

Capybara.register_driver :selenium_chrome do |app| 
    Capybara::Driver::Selenium.new(app, :browser => :chrome) 
end 


Before('@firefox') do 
    Capybara.current_driver = :selenium_firefox 
end 

Before('@chrome') do 
    Capybara.current_driver = :selenium_chrome 
end 
+0

シナリオのテスト中に問題が発生したのは、何らかの形でキャッシュ/クッキーがシナリオの2番目または3番目の例が失敗するということです。 1つの例を実行した後にブラウザを閉じた場合、次の例のために再び開いた場合などにのみ機能します。すべて同じシナリオ内にあります。これがブラウザを何とかして閉じることが可能かどうか疑問に思っていた理由です。 – chiurox

+0

ウィンドウを閉じることができましたか?特定のシナリオの前にウィンドウを閉じる必要があります。 – Boti

+0

これを実行すると、セッションをクリアできます。 "Capybara.current_session.driver.reset!"または、javascriptで閉じることができます。しかし、次のシナリオの前に新しいウィンドウを開き、その新しいウィンドウを選択することが重要です。セレンのドキュメントをチェックアウトしてください。 http://seleniumhq.org/docs/03_webdriver.html#moving-between-windows-and-frames – Darwin

関連する問題