1
假設我有3個場景大綱,並且需要使用Firefox運行場景1,關閉瀏覽器,然後使用Chrome運行場景2,關閉瀏覽器,然後運行場景3與Firefox。 有沒有什麼方法可以在每種情況之後關閉/退出Cucumber/Capybara中的瀏覽器?獲取Cucumber/Capybara關閉並在場景後打開另一個瀏覽器
到目前爲止,我已經註冊了兩個驅動器,一個用於Firefox和一個Chrome瀏覽器:
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
然後在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
有沒有辦法在每個場景之後強制關閉瀏覽器?
編輯:我想:
page.evaluate_script("window.close()")
page.execute_script("window.close()")
但兩者報表沒有影響。
我在測試場景時遇到的問題是,某種程度上,緩存/ cookie導致場景中的第二個/第三個示例失敗。它只在瀏覽器運行一個示例後關閉,下一個示例再次打開時才起作用,等等。全部在相同的情況下。這就是爲什麼我想知道是否有可能強制瀏覽器以某種方式關閉。 – chiurox
您是否設法關閉了窗戶?我需要在某些場景之前關閉窗戶。 – Boti
您可以這樣做來清除會話。 「Capybara.current_session.driver.reset!」或者你可以用javascript關閉它。但是,在下一個場景之前打開新窗口並選擇新窗口很重要。爲此檢出Selenium文檔。 http://seleniumhq.org/docs/03_webdriver.html#moving-between-windows-and-frames – Darwin