Кредит пользователю Артур Веборг . Я нашел этот пост, который решил мою проблему отлично. Он скопирован из другого потока. Для более ясного понимания см. Полный поток здесь .
Выбранный ответ не сработал, как ожидалось (err.state
было undefined
, а NoSuchElementError
всегда выбрасывалось) - хотя концепция использования необязательных обратных вызовов все еще работает.
Поскольку я получаю ту же ошибку, на которую ссылается OP, я считаю, что на NoSuchElementError
следует ссылаться при определении, существует ли целевой элемент или нет. Как следует из названия, это ошибка, которая выдается, когда элемент не существует. Таким образом, условие в errorCallback должно быть:
err instanceof webdriver.error.NoSuchElementError
Таким образом, полный кодовый блок будет выглядеть следующим образом (я также использую async
/ await
для тех, кто использует преимущества этот синтаксис):
var existed = await driver.findElement(webdriver.By.id('test')).then(function() {
return true;//it existed
}, function(err) {
if (err instanceof webdriver.error.NoSuchElementError) {
return false;//it was not found
} else {
webdriver.promise.rejected(err);
}
});
//handle value of existed appropriately here