结果我从其他页面得到了一些不好的建议,这实际上干扰了 Poltergeist 的自然行为。
我把那些废话拿出来,然后 Poltergeist 工作了。从那以后,我实现了一种更好的在测试中设置 cookie 的替代方法,一切都很好。
根据大众的需求,这是我的测试步骤中的 cookie-setter 代码:
case Capybara.current_session.driver
when Capybara::Poltergeist::Driver
page.driver.set_cookie(k,v)
when Capybara::RackTest::Driver
headers = {}
Rack::Utils.set_cookie_header!(headers,k,v)
cookie_string = headers['Set-Cookie']
Capybara.current_session.driver.browser.set_cookie(cookie_string)
when Capybara::Selenium::Driver
page.driver.browser.manage.add_cookie(:name=>k, :value=>v)
else
raise "no cookie-setter implemented for driver #{Capybara.current_session.driver.class.name}"
end
重要警告:如果您使用上述代码通过测试步骤设置 cookie,则您的页面的 Javascript 可能不允许覆盖它。如果您的测试需要您的页面更改 cookie,您可能会发现 cookie 永远不会被更改。