2013-12-09 77 views
5

使用CasperJS我如何捕獲和處理CasperError?捕獲和處理CasperError

默認情況下,程序繼續執行(它什麼都不做,只是傳播錯誤)。

這些錯誤記錄到控制檯/標準輸出,但我似乎沒有看到(從文檔)捕捉和處理這些錯誤的方法。

例子:

this.fillSelectors(selector, data); 

會產生:

CasperError: Errors encountered while filling form: form not found

我知道我可以檢查,以確保一切存在之前調用,但有沒有辦法在事後抓? (這也適用於許多其他操作,如casper.click以及)

回答

6

我用的東西現在是這樣的:

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

,然後我有一個自定義功能ErrorFunc處理任何警告或致命錯誤的數組。

如果您有不成功的點擊,應該丟棄casper.on('error')。因此,您可以將自定義代碼放置在您想要處理錯誤的方式。

這是documentation for Casper events

+0

嗯,這不是爲我工作。我什麼都抓不到。 – MrD

0

這是誰的完整的解決方案需要的^^

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