如何在casperJS中设置cookie

时间:2013-09-13 22:50:07

标签: javascript cookies phantomjs casperjs

我有一个非常简单的casperjs脚本来访问几个页面并截取一些元素的截图。问题是,首次加载后,这些页面会显示一些我在屏幕截图中绝对不需要的叠加窗口。显示叠加后,它会设置一个cookie(prefs:{“dv”:“1”}),以防止此叠加层出现在下一页加载中。

所以我的计划是在加载页面之前通过casperJS设置这个烹饪。但由于某种原因,它不起作用,我甚至不确定我是否正确设置它。以下是我到目前为止尝试过的几个选项:

var casper = require('casper').create();

casper.start( url, function() {
document.cookie="prefs={\"dv\":\"1\"}";
this.captureSelector(filename + '.png', 'div#main.contentFrame');
});

casper.run();

this.page.setCookies("prefs={\"dv\":\"1\"}")

甚至

phantom.addCookie({
  'name': 'prefs',
  'value': {"dv":"1"},
  'domain': '.somesite.com'
});

什么是正确的方法?

2 个答案:

答案 0 :(得分:1)

可能该页面未收到cookie。

您可以尝试在load.started事件监听器中使用相同的代码。

此外,添加evaluate脚本以检查页面加载的每个阶段是否存在cookie。这可能有所帮助。

答案 1 :(得分:0)

你可以像这样直接发送一个Cookie标题:

casper.start().thenOpen('http://yourUrl', {
    headers:{ "Cookie" : "CookieName=cookieValue" }
  }, function() {
    // ...
});