CasperJS / PhantomJS没有在thenOpen中清除缓存

时间:2016-03-13 20:50:45

标签: caching phantomjs casperjs

我在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。任何帮助或解决方法?

1 个答案:

答案 0 :(得分:1)

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