我想继续使用相同的会话,我的意思是Rails在使用Capybara的各种Test :: Unit集成测试之间的会话. Capybara :: Session对象在重新使用的所有测试中是相同的,但是当我在另一个测试中访问另一个页面时,我立即注销.
挖掘我发现capybara_session.driver.browser.manage.all_cookies在一个测试和下一个测试之间被清除.
任何想法怎么样?还是为什么?还是怎么避免呢?
尝试解决这个问题,我将Cookie保存在一个类变量中,然后通过运行以下方法重新添加:
capybara_session.driver.browser.manage.add_cookie(@@cookie)
它似乎工作,cookie在那里,但是当有请求时,cookie被替换为另一个,所以它没有效果.
有没有其他方式实现这一点?
解决方法
在与页面交互的水瓶座代码之后添加以下内容:
Capybara.current_session.instance_variable_set(:@touched,false) or page.instance_variable_set(:@touched,false)
如果不行,这可能有助于:
https://github.com/railsware/rack_session_access
http://collectiveidea.com/blog/archives/2012/01/05/capybara-cucumber-and-how-the-cookie-crumbles/