【问题标题】:Casperjs not triggering page.error event on errors in evaluateCasperjs 未在评估错误时触发 page.error 事件
【发布时间】:2014-01-31 20:24:31
【问题描述】:

我想在 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)

当评估失败时,这些都不会被触发。有什么方法可以监听远程页面的错误吗?

【问题讨论】:

    标签: events listener phantomjs casperjs


    【解决方案1】:

    我也不知道怎么做,可能有更合适的方法。

    假设您只想在自己的评估代码中捕获错误(而不是您正在加载的网站部分的错误),一种解决方案是包装 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
    

    例如调用:

    casper.myevaluate ()-> silly
    

    ...将使用ReferenceError: Can't find variable: silly 调用您的错误处理程序代码

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2016-11-10
      • 1970-01-01
      • 2018-04-05
      • 2017-11-12
      • 1970-01-01
      • 2017-09-25
      • 1970-01-01
      相关资源
      最近更新 更多