Events Casperjs未在评估中的错误时触发page.error事件
我想在Casper中捕获远程页面上的错误Events Casperjs未在评估中的错误时触发page.error事件,events,listener,phantomjs,casperjs,Events,Listener,Phantomjs,Casperjs,我想在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
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)
当评估失败时,这两项都不会触发。有没有办法监听远程页面上的错误?我也不知道怎么做,可能还有更合适的方法 假设您只想捕获自己的评估代码中的错误(而不是正在加载的站点部分的错误),一种解决方案是包装casper evaluate函数以包含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
例如,打电话:
casper.myevaluate ()-> silly
…将使用ReferenceError:cannotfind variable:silly调用错误处理程序代码