我有一个非常简单的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'
});
什么是正确的方法?
答案 0 :(得分:1)
可能该页面未收到cookie。
您可以尝试在load.started
事件监听器中使用相同的代码。
此外,添加evaluate
脚本以检查页面加载的每个阶段是否存在cookie。这可能有所帮助。
答案 1 :(得分:0)
你可以像这样直接发送一个Cookie标题:
casper.start().thenOpen('http://yourUrl', {
headers:{ "Cookie" : "CookieName=cookieValue" }
}, function() {
// ...
});