使用CasperJS遍历网页的所有资源

时间:2014-08-14 10:59:05

标签: loops resources casperjs

如何在没有Casper默认时间限制为5秒的情况下循环网页的所有资源?

如果我循环网页'资源

casper.waitForResource(function check(resource){

    ....
});
在5000ms后,casper引发测试失败。

1 个答案:

答案 0 :(得分:1)

casper.waitForResource不适用于循环资源。相反,它用于等待具有某些属性的特定资源。如果您使用check函数,则可以访问在找到匹配资源时看到的资源。

您想要的是resource.received或类似的事件监听器。问题是您想要对资源信息做什么。请记住,CasperJS和底层PhantomJS不会公开资源内容。您需要在页面上下文中单独下载__utils__.sendAJAX

如果您希望资源列表在特定操作后的资源测试流程中正确,您可以执行以下操作:

var resources = [],
    collectResources = false;

casper.on('resource.received', function(resource) {
    if (!collectResources) { return; }
    resources.push(resource);
});

// later...
casper.then(function(){
    collectResources = true;
    this.click("#someAction");
}).wait(5000).then(function(){
    collectResources = false;
    resources.forEach(function(resource){
        // do something with it
    });
});