Получение Cucumber/Capybara для закрытия и открытия другого браузера после сценариев

Скажем, у меня есть 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

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

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

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

Но оба заявления не возымели действия.


person chiurox    schedule 26.07.2011    source источник


Ответы (1)


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

  • Прекратите закрывать окна.
  • Изменить на явные теги браузера (@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
person Darwin    schedule 10.08.2011
comment
Проблема, с которой я столкнулся при тестировании своих сценариев, заключается в том, что кеш/файлы cookie каким-то образом приводят к сбою второго/третьего... примера в сценарии. Это работает только в том случае, если браузер закрывается после запуска одного примера, снова открывается для следующего примера и так далее. Все по одному сценарию. Вот почему мне было интересно, можно ли как-то заставить браузер закрыться. - person chiurox; 11.08.2011
comment
Ты успел закрыть окна? Мне нужно закрыть окна перед определенными сценариями. - person Boti; 10.08.2012
comment
Вы можете сделать это, чтобы очистить сеанс. Capybara.current_session.driver.reset! Или вы можете закрыть его с помощью javascript. Но тогда важно открыть новое окно перед следующим сценарием и выбрать это новое окно. Для этого ознакомьтесь с документацией по Selenium. seleniumhq.org/docs/ - person Darwin; 21.08.2012