我在CasperJS中遇到了缓存问题。这是我的代码段。
var casper = require('casper').create({
verbose: true,
logLevel: 'debug',
pageSettings: {
loadImages:false,
loadPlugins: false
}
});
casper.options.onResourceRequested = function(C, requestData, request) {
if ((/https?:\/\/.+?\.css/gi).test(requestData['url']) || requestData['Content-Type'] == 'text/css') {
//console.log('Skipping CSS file: ' + requestData['url']);
request.abort();
}
else if ((/https?:\/\/.+?\.js/gi).test(requestData['url']) || requestData['Content-Type'] == 'text/javascript' || requestData['Content-Type'] == 'application/javascript') {
//console.log('Skipping JS file: ' + requestData['url']);
request.abort();
}
}
}
casper.on("resource.error", function(resourceError){
console.log('Unable to load resource (#' + resourceError.id + 'URL:' + resourceError.url + ')');
console.log('Error code: ' + resourceError.errorCode + '. Description: ' + resourceError.errorString);
});
var cartlist_url = [
'http://secure.sandbox.thesitename.com/store_view/checkout/cart/add/sku/11111/category_id/CAT',
'http://secure.sandbox.thesitename.com/store_view/checkout/cart/add/sku/22222/category_id/CAT',
'http://secure.sandbox.thesitename.com/store_view/checkout/cart/add/sku/33333/category_id/CAT'
];
var selector = "table#thecart tbody tr td span.cart-price p:not(.old-price)";
casper.start();
casper.each(carturl_list, function(self, link) { //this.thenOpen(link, function(){});
this.thenOpen(link, function() {
casper.page.clearMemoryCache();
this.echo(this.getHTML(selector).trim()match(/[0-9]+[.,]?[0-9]+/)[0]);
});
});
casper.run();
沙箱网址用于将产品直接添加到购物车。每次添加产品后,该页面会自动重定向到购物车网址http://secure.sandbox.thesitename.com/store_view/checkout/cart/我正在处理首先获取产品页面价格的报告页面(在单独的代码中,而不是此处),然后获取购物车页面价格(这里的代码)。报告页面将显示两个价格,以确保没有差异。问题是购物车页面价格始终与第一个sku相同。 casperjs调用是这样的:
>casperjs addtocart.js --skulist=1111,22222,33333 --category=CAT
价格应该是19.99,18.99和19.99。但是当我在控制台中运行上述命令时,所有价格都是19.99,如果我将skulist选项更改为--skulist=22222,11111,33333
,则所有价格都显示为18.99。我使用--disk-cache=false
但没有效果。根据{{3}}中的帖子,有一种方法可以使用page.clearMemoryCache()
来实现,所以我使用它,但没有效果。我想在购物车网址上附加一个随机请求参数,但重定向是自动的,我无法控制它。根据上述帖子中提到的链接(PhantomJS keeping cache),问题可能仍然存在。我的PhantomJS version is 2.1.1
和我的CasperJS version is 1.1.0-beta5
。任何帮助或解决方法?
答案 0 :(得分:1)
上述问题不是由缓存引起的。请看我的评论。