2013-12-09 14 views
5

Używanie CasperJS w jaki sposób złapać i obsłużyć CasperError?Catch and Handle CasperError

Domyślnie pojawia się kontynuacja wykonywania programu (który nic nie robi, ale propaguje błąd).

Te błędy są rejestrowane w konsoli/stdout, ale nie widzę sposobu (z dokumentów), aby złapać i obsługiwać te błędy.

Przykład:

this.fillSelectors(selector, data); 

Może powodować:

CasperError: Errors encountered while filling form: form not found

wiem, że mogę sprawdzić, czy wszystko istnieje przed wywołaniem, ale czy jest jakiś sposób, aby złapać po fakcie? (Dotyczy to wielu innych operacji jak casper.click również)

Odpowiedz

6

obecnie używam coś takiego:

casper.on('error', function(msg,backtrace) { 
    this.capture('./out/error.png'); 
    throw new ErrorFunc("fatal","error","filename",backtrace,msg); 
}); 

a potem mam niestandardową funkcję ErrorFunc na przetwarzanie tablicę żadnych ostrzeżeń lub fatalnym błędem.

Jeśli klikniesz niepomyślnie, powinien on rzucić casper.on('error'). Możesz więc umieścić tam niestandardowy kod, aby sprawdzić, jak chciałbyś poradzić sobie z błędem.

Oto documentation for Casper events.

+0

Hm, to nie jest praca dla mnie. Nie mogę niczego złapać. – MrD

0

Jest to kompletne rozwiązanie dla potrzebujących ^^

casper.on('error', function(msg, backtrace) { 
    this.capture('/tmp/error.png'); 
    console.log('backtrace: ' + JSON.stringify(backtrace, null, 4)); 
    console.log('message: ' + JSON.stringify(msg, null, 4)); 
    console.log('check capture in /tmp/error.png'); 
    casper.exit(1); 
})