2013-10-04 22 views
9

我试图通过casperjs捕获站点console.log和console.error。在console.log的情况下,我有工作代码:Casperjs捕获console.log和console.error

casper.on('remote.message', function(message) { 
    this.echo('remote message caught: ' + message); 
}); 

但我无法弄清楚如何捕获console.error。我需要这个来捕获任何资源错误(比如找不到图片)。

回答

3

确定它的怪异回答我的问题,但我发现张贴dpashkevich一个coderwall博客的解决方案:

casper.on('resource.received', function(resource) { 
    var status = resource.status; 
    if(status >= 400) { 
     casper.log('Resource ' + resource.url + ' failed to load (' + status + ')', 'error'); 

     resourceErrors.push({ 
      url: resource.url, 
      status: resource.status 
     }); 
    } 
}); 

作品辉煌

+9

对不起,但你没有回答这个问题,这不会捕获控制台消息。 – challet

3

您可以使用下面的事件来获得远程错误:

casper.on("resource.error", function(resourceError) { 
    this.echo("Resource error: " + "Error code: "+resourceError.errorCode+" ErrorString: "+resourceError.errorString+" url: "+resourceError.url+" id: "+resourceError.id, "ERROR"); 
}); 

工程就像魅力!

9

另外还有page.error处理程序:

casper.on("page.error", function(msg, trace) { 
    this.echo("Error: " + msg, "ERROR"); 
}); 

根据您需要捕捉哪些错误,这一次可能会更好。