PhantomJS是否支持cookie?如果是,我在哪里可以找到API详细信息?
经过一段时间的搜索,我无法弄清楚。
最佳答案
是的,从1.7开始,Phantom具有完整的cookie处理功能,默认情况下已启用。 Cookies会在过程的整个生命周期内保留。
如果您希望在运行Phantom时保留cookie,可以使用command-line option cookies-file
来指定存储持久cookie的位置。
在页面脚本中,可以使用常规的document.cookie
属性。就像在浏览器中一样,此属性返回的字符串类似于在Cookie:
HTTP header 中发送的字符串。
在Phantom脚本中,您可以通过page.cookies
访问页面的cookie(受通常的原点限制),该返回对象。
您还可以使用phantom.cookies
访问所有cookie(来自所有域)。
var page = require('webpage').create();
page.open('http://example.com', function (status) {
page.evaluate(function() {
document.cookie; // => "test=test-value;"
});
page.cookies; // => [{
// domain: "example.com",
// expires: "Wed, 08 Jan 2014 00:00:00 GMT"
// httponly: false,
// name: "test",
// path: "/",
// secure: false,
// value: "test-value"
// }]
phantom.cookies; // contains ALL cookies in Phantom's jar
});
要使用add/edit/delete cookies,请使用
addCookie
对象或deleteCookie
对象的clearCookies
,WebPage
和phantom
方法。使用
WebPage
对象的方法时,仅修改页面可见的cookie。禁止访问其他域。但是,使用
phantom
的cookie方法可以访问所有cookie。 phantom.addCookie
需要一个域(如果您未指定,则WebPage.addCookie
会假定当前域),并且phantom.deleteCookie
会删除与指定名称匹配的任何 cookie。