Как мне поймать исключение в стажере 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
или любой другой в этом отношении, и попробуйте снова найти элемент и нажать на него. Элемент добавляется и удаляется в / из домена через фиксированный интервал, и поэтому иногда я получаю это исключение в моем тестовом прогоне и, следовательно, в неудачном прогоне. Я хочу обработать это исключение и предотвратить сбой запуска, поскольку на самом деле это не сбой из-за ошибки (или это так?).
Так что вопрос в том, как мне обработать исключение на .click()
метод?
1 ответ
В вашем обратном вызове попробуйте использовать remote
вместо this.parent
, this.parent
использует тот же элемент контекста, что и родительская цепочка. Это означает, что если вы оказались в ловушке, потому что вы пытались нажать устаревший элемент, вызывая this.parent.findById(id)
в catch
будет выполнять поиск, основанный на этом устаревшем элементе.