2013-10-04 12 views
9

Próbuję złapać witryny console.log i console.error przez casperjs. W przypadku konsoli.log mam działający kod:Casperjs złapać console.log i console.error

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

Ale nie mogę wymyślić, jak złapać console.error. Potrzebuję tego do przechwytywania dowolnego błędu zasobów (np. Nie znaleziono obrazów).

Odpowiedz

3

Ok to dziwne, aby odpowiedzieć na moje własne pytanie, ale znalazłem rozwiązanie na blogu coderwall wysłana przez dpashkevich:

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 
     }); 
    } 
}); 

Works genialny

+9

Przykro mi, ale nie odpowiadasz na pytanie, nie powoduje to przechwycenia komunikatów konsoli. – challet

3

można wykorzystywać następujące zdarzenie dostać błędy zdalne:

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

Działa jak urok!

9

Istnieje również page.error obsługi:

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

zależności od błędów trzeba złapać, tym razem może być lepiej.