使用javascript设置cookie在Poltergeist和/或PhantomJS中不起作用

Gra*_*ier 3 cucumber phantomjs poltergeist

我有一个设置cookie的网页document.cookie = value,它在服务器上运行时运行良好.

然而,在我的黄瓜测试中(使用Poltergeist/PhantomJS),cookie不会从一页到下一页持续存在.

测试流程为:

  1. 页面A打开
  2. 用户单击一个按钮,触发JS设置cookie
  3. 用户单击链接到页面B.
  4. 页面B有一个反映cookie值的组件

在针对正在运行的服务器的真实浏览器中,它很好.

但在黄瓜中,第4步的显示显示它看到一个空白的cookie.

有谁知道如何修复或调查这个?

Gra*_*ier 6

事实证明我从其他一些页面得到了一些不好的建议,这实际上干扰了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
Run Code Online (Sandbox Code Playgroud)

重要CAVEAT:如果您使用上述代码通过测试步骤设置cookie,则可能不允许您的页面的Javascript覆盖它.如果您的测试需要您的页面来更改cookie,您可能会发现cookie永远不会被更改.