CasperJS/PhantomJS不清除thenOpen中的缓存



我在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.有什么帮助或解决方法吗?

上述问题不是由缓存引起的。请参阅我的评论。

最新更新