2013-12-09 15 views
5

Utilizzo di CasperJS come posso catturare e gestire CasperError?Cattura e maneggia CasperErrore

Il valore predefinito sembra continuare l'esecuzione del programma (che non fa altro che propagare l'errore).

Questi errori vengono registrati nella console/stdout ma non mi sembra di vedere un modo (dai documenti) di rilevare e gestire questi errori.

Esempio:

this.fillSelectors(selector, data); 

può produrre:

CasperError: Errors encountered while filling form: form not found

so che posso controllare per assicurarsi che tutto esiste prima di chiamare, ma c'è un modo per catturare dopo il fatto? (Questo vale per molte altre operazioni come casper.click pure)

risposta

6

ho usare qualcosa di simile al momento:

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

e poi ho una funzione personalizzata ErrorFunc per elaborare serie di eventuali avvisi o un errore fatale.

Se si ha un clic non riuscito, è necessario lanciare il numero casper.on('error'). Quindi puoi inserire il codice personalizzato lì per come vorresti gestire l'errore.

Ecco lo documentation for Casper events.

+0

Hm, questo non sta funzionando per me. Non riesco a prendere nulla. – MrD

0

Questa è la soluzione completa per che ne hanno bisogno ^^

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