我想在Casper的远程页面上捕获错误。
casper.thenEvaluate ->
document.querySelector("#selector-doesnt-exist").attribute-doesnt-exist = 'value'
我设置了以下侦听器:
casper.on "page.error", (message, trace) ->
console.log(message)
casper.on "remote.message", (message) ->
console.log(message)
评估失败时,这些都没有被触发。有没有办法在远程页面上听错?
答案 0 :(得分:0)
我也不知道怎么做,而且可能有更合适的方法。
假设您只想捕获自己的评估代码中的错误(而不是您正在加载的网站上的错误),一种解决方案是将casper评估函数包装为包含try-catch,并处理从评估中返回错误:
casper.myevaluate = (fn, args...) ->
s = @evaluate (fn,args) ->
try
fn.apply(this,args)
catch e
return {'ourError':e}
, fn, args
if s.ourError?
ErrorHandler.Exception(s.ourError)
return s
E.g。主叫:
casper.myevaluate ()-> silly
...会使用ReferenceError: Can't find variable: silly