我在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();
沙盒 URL 用于将产品直接添加到购物车。每次添加产品后,页面会自动重定向到购物车 URL,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
但没有效果。根据PhantomJS中保持缓存的帖子,有一种方法可以使用page.clearMemoryCache()
所以我使用了它,但没有效果。我想将随机请求参数附加到购物车 URL,但重定向是自动的,我无法控制它。根据上面帖子中提到的链接(https://github.com/ariya/phantomjs/issues/10357),该问题可能仍然存在。我的PhantomJS version is 2.1.1
和我的CasperJS version is 1.1.0-beta5
.有什么帮助或解决方法吗?
上述问题不是由缓存引起的。请参阅我的评论。