我如何在实习生 JS 中捕获异常?

How do I catch an exception in intern JS?

我有以下片段

,clickStaleElement: function(remote, id) {
  return remote
    .findById(id)
      .execute(function(id){
        //force org.openqa.selenium.StaleElementReferenceException
        $(document.getElementById(id)).addClass('hidden');
      },[id])
      .click()
      .catch(function(){
        return this.parent
          .findById(id)
            .execute(function(id){
              //bring back the element
              $(document.getElementById(id)).removeClass('hidden');
            },[id])
            .click()
          .end()
        ;
      })
    .end()
  ;
}

应该处理 StaleElementReferenceException 或任何其他与此相关的内容,然后尝试再次找到该元素并单击它。以固定间隔添加和删除元素 to/from dom,因此有时我在测试 运行 中遇到此异常,因此失败 运行。我想处理这个异常并防止 运行 失败,因为这并不是真正的错误(或者是错误?)。

所以问题是 如何处理 .click() 方法的异常?

在您的回调中,尝试使用 remote 而不是 this.parentthis.parent 使用与父链相同的上下文元素。这意味着,如果您因为尝试单击陈旧元素而陷入困境,则在 catch 中调用 this.parent.findById(id) 将执行以该陈旧元素为根的搜索。