Как мне поймать исключение в стажере 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 будет выполнять поиск, основанный на этом устаревшем элементе.

Другие вопросы по тегам