【问题标题】:CasperJS/PhantomJS not clearing cache in thenOpenCasperJS/PhantomJS 没有在 thenOpen 中清除缓存
【发布时间】:2016-03-13 20:50:45
【问题描述】:

我在 CasperJS 中遇到了缓存问题。这是我的代码 sn-p。

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 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 keeping cache 中的帖子,有一种方法可以使用page.clearMemoryCache(),所以我使用了它,但没有效果。我想将随机请求参数附加到购物车 URL,但重定向是自动的,我无法控制它。根据上述帖子中提到的链接 (https://github.com/ariya/phantomjs/issues/10357),问题可能仍然存在。我的PhantomJS version is 2.1.1 和我的CasperJS version is 1.1.0-beta5。任何帮助或解决方法?

【问题讨论】:

  • 我截图发现,每次casper.each使用casper.thenOpen打开不同SKU的购物车URL时,实际上sku被添加到同一个购物车中。我认为它应该是单独的会话,但可能是 cookie 造成了这个问题。我通过使用casper.click 的链接解决了我的问题,以便在下一次迭代之前从购物车中删除产品。

标签: caching phantomjs casperjs


【解决方案1】:

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-12-12
    • 2015-05-06
    • 1970-01-01
    • 2021-07-07
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多