我有一个网页,用document.cookie = value
设置一个cookie,它在服务器上运行时效果很好。
然而,在我的黄瓜测试中(使用Poltergeist / PhantomJS),cookie不会从一页到下一页持续存在。
测试流程为:
在针对正在运行的服务器的真实浏览器中,没关系。
但是在黄瓜中,第4步的显示显示它看到一个空白的cookie。
有谁知道如何解决或调查这个问题?
答案 0 :(得分:6)
原来我从some other page得到了一些不好的建议,这实际上干扰了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
重要CAVEAT:如果您使用上述代码通过测试步骤设置Cookie,则可能不允许您的网页的Javascript覆盖它。如果您的测试需要您的页面来更改cookie,您可能会发现cookie永远不会被更改。