2013-10-04 45 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"); 
}); 

根據您需要捕捉哪些錯誤,這一次可能會更好。