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对象的clearCookiesWebPagephantom方法。

使用WebPage对象的方法时,仅修改页面可见的cookie。禁止访问其他域。

但是,使用phantom的cookie方法可以访问所有cookie。 phantom.addCookie需要一个域(如果您未指定,则WebPage.addCookie会假定当前域),并且phantom.deleteCookie会删除与指定名称匹配的任何 cookie。

10-06 11:59