使用javascript设置cookie在Poltergeist和/或PhantomJS中不起作用
问题描述:
我有一个网页,它设置了一个包含document.cookie = value
的cookie,并且它在服务器上运行时可以很好地工作。使用javascript设置cookie在Poltergeist和/或PhantomJS中不起作用
但是,在我的黄瓜测试(与Poltergeist/PhantomJS),饼干不是从一个页面持续到下一个。
测试流程是:
- 页A打开
- 用户点击一个按钮,这触发JS设置cookie
- 用户点击链接到网页B
- 页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不会被改变。
请您分享一下您学到的知识,而不是让它变得如此模糊?至少要添加一些链接,这样登陆这里的人不会一无所有。谢谢! – radixhound
完成。好评。 –