如何在没有Casper默认时间限制为5秒的情况下循环网页的所有资源?
如果我循环网页'资源
casper.waitForResource(function check(resource){
....
});
在5000ms后,casper引发测试失败。
答案 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
});
});