Получение Cucumber / Capybara, чтобы закрыть и открыть другой браузер после сценариев - PullRequest
1 голос
/ 26 июля 2011

Допустим, у меня есть 3 схемы сценариев, и мне нужно запустить сценарий 1 с Firefox, закрыть браузер, затем запустить сценарий 2 с Chrome, закрыть браузер и, наконец, запустить сценарий 3 с Firefox.Есть ли способ закрыть / закрыть браузер в 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

Есть ли способ заставить браузер закрываться после каждого сценария?

РЕДАКТИРОВАТЬ: Iпробовал:

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

Но оба утверждения не имели никакого эффекта.

1 Ответ

0 голосов
/ 10 августа 2011

Это то, что вы должны сделать.

  • Хватит закрывать окна.
  • Изменить на явные теги браузера (@ 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
...