为每个测试开始一个新的水豚会话 [英] Starting a new capybara session for every test

查看:76
本文介绍了为每个测试开始一个新的水豚会话的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我试图为我们的每个rspec测试启动一个新的Capybara会话,但无法弄清楚如何在完成后正确退出/关闭会话。

I am trying to start a new Capybara session for every one of our rspec tests and am unable to figure out how to properly quit/close the session on completion.

这是我的spec_helper.rb文件。

Here is my spec_helper.rb file.

RSpec.configure do |config|
  config.include Capybara::DSL

  config.before :each do
      @session = Capybara::Session.new(:selenium)
  end

 config.after :each do
     @session.driver.browser.quit
 end

end

@ session.driver.browser.quit语句正确关闭了浏览器,但是对于上一次运行的测试,我收到一条错误消息:

The @session.driver.browser.quit statement properly closes the browser but for the last test that gets run I get an error message:

/Users/lpc/.rvm/gems/ruby-1.9.3-p448@capybara/gems/selenium-webdriver-2.37.0/lib/selenium/webdriver/common/file_reaper.rb:32:in `reap': file not added for reaping: "/var/folders/5l/kw4vv8bj7rvc4xv6yfyspkwh0000gn/T/webdriver-profile20131107-96496-cx4x5r" (Selenium::WebDriver::Error::WebDriverError)
from /Users/lpc/.rvm/gems/ruby-1.9.3-p448@capybara/gems/selenium-webdriver-2.37.0/lib/selenium/webdriver/firefox/launcher.rb:45:in `quit'
from /Users/lpc/.rvm/gems/ruby-1.9.3-p448@capybara/gems/selenium-webdriver-2.37.0/lib/selenium/webdriver/firefox/bridge.rb:58:in `ensure in quit'
from /Users/lpc/.rvm/gems/ruby-1.9.3-p448@capybara/gems/selenium-webdriver-2.37.0/lib/selenium/webdriver/firefox/bridge.rb:58:in `quit'
from /Users/lpc/.rvm/gems/ruby-1.9.3-p448@capybara/gems/selenium-webdriver-2.37.0/lib/selenium/webdriver/common/driver.rb:168:in `quit'
from /Users/lpc/.rvm/gems/ruby-1.9.3-p448@capybara/gems/capybara-2.1.0/lib/capybara/selenium/driver.rb:140:in `quit'
from /Users/lpc/.rvm/gems/ruby-1.9.3-p448@capybara/gems/capybara-2.1.0/lib/capybara/selenium/driver.rb:17:in `block in browser'

我相信问题是因为水豚在所有测试结束时也退出浏览器。有谁知道执行此操作的正确方法以及如何使此错误消息静音?谢谢您的帮助。

I believe the problem is because Capybara is also quitting the browser at the conclusion of all the tests. Does anyone know the proper way to do this and how I can silence this error message? Thanks for any help.

====更新=====

====UPDATE=====

关闭循环为此,我已将问题发布到Capybara的Google组中,并已修复并合并为master。

To close the loop on this, I posted to Capybara google group with my issue was fixed and merged into master.

https://groups.google.com/forum/#!topic/ruby-capybara/tZi2F306Fvo

推荐答案

尝试使用 Capybara.reset_session!

feature "my test" do    
  after { Capybara.reset_sessions! }
  
  scenario "my scenario" do
    # your assertions
  end
end

这篇关于为每个测试开始一个新的水豚会话的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆