在场景之后让Cucumber / Capybara关闭并打开另一个浏览器

时间:2011-07-26 17:04:55

标签: ruby cucumber capybara

假设我有3个场景大纲,我需要使用Firefox运行场景1,关闭浏览器,然后使用Chrome运行场景2,关闭浏览器,最后使用Firefox运行场景3。 在每个场景之后,有没有办法在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()")

但这两个陈述都没有效果。

1 个答案:

答案 0 :(得分:0)

这是你应该做的。

  • 停止关闭窗户。
  • 更改为显式浏览器代码(@ 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


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

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