我如何在实习生 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.parent
。 this.parent
使用与父链相同的上下文元素。这意味着,如果您因为尝试单击陈旧元素而陷入困境,则在 catch
中调用 this.parent.findById(id)
将执行以该陈旧元素为根的搜索。
我有以下片段
,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.parent
。 this.parent
使用与父链相同的上下文元素。这意味着,如果您因为尝试单击陈旧元素而陷入困境,则在 catch
中调用 this.parent.findById(id)
将执行以该陈旧元素为根的搜索。