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

问题描述:

我有一个网页,它设置了一个包含document.cookie = value的cookie,并且它在服务器上运行时可以很好地工作。使用javascript设置cookie在Poltergeist和/或PhantomJS中不起作用

但是,在我的黄瓜测试(与Poltergeist/PhantomJS),饼干不是从一个页面持续到下一个。

测试流程是:

  1. 页A打开
  2. 用户点击一个按钮,这触发JS设置cookie
  3. 用户点击链接到网页B
  4. 页B具有分量这反映了饼干的价值

在一个真正的浏览器对运行的服务器,没关系。

但是在黄瓜中,第4步的显示表明它看到一个空白的饼干。

有谁知道我该如何解决或调查这个问题?

原来我从some other page得到了一些不好的建议,实际上这干扰了波特杰克斯的自然行为。

我把那个垃圾拿出来了,Poltergeist工作了。从那以后,我在测试中实现了一种更好的替代Cookie设置方法,并且都很好。

应广大用户要求,这里是我的测试步骤的cookie的二传手代码:

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不会被改变。

+0

请您分享一下您学到的知识,而不是让它变得如此模糊?至少要添加一些链接,这样登陆这里的人不会一无所有。谢谢! – radixhound

+0

完成。好评。 –