У меня есть проект Node.js, который проверяет функциональность веб-сайта.Он использует Webdriver.io v4 и Mocha / Chai.
Я создал функцию, которая проверяет, существует ли элемент на странице с таймаутом в 1 минуту.Если элемент существует, он должен вернуть true
.Если это не так, он должен вернуть false
.
. Я использую ту же функцию, чтобы проверить, не присутствует ли элемент на странице.В этом случае я ожидаю, что функция вернет false
.Однако вместо возврата false функция выдает ошибку Timeout и не возвращает ни true
, ни false
.Это странно, потому что я включил оператор return false
в блок catch моего предложения try-catch.
В этом проекте при сбое функции я получу сообщение, такое как expected false to equal true
илиexpected undefined to equal true
.В этом случае я получаю сообщение Timeout of 60000ms exceeded. Try to reduce the run time or increase your timeout for test specs (http://webdriver.io/guide/testrunner/timeouts.html); if returning a Promise, ensure it resolves.
Да, я ожидаю, что element.waitForExist()
выдаст ошибку тайм-аута, но эта ошибка должна быть обработана в блоке перехвата путем возврата false
.Программа отображает журнал ошибок, как и ожидалось в строке console.log(ex)
, но не возвращает false
.
Почему моя функция не возвращает false
в этом случае?Какой самый лучший / самый простой способ вернуть правильное значение?Спасибо!
Это моя функция:
checkElementExists: {
value: function (element) {
try {
element.waitForExist();
if (element.isExisting()) {
return true;
} else {
return false;
}
} catch (ex) {
console.log(ex);
return false;
}
}
}
Ожидается: если элемент существует на странице, функция возвращает true
.Если элемент не существует на странице, функция возвращает false
.
Actual: Если элемент существует на странице, функция возвращает true
.Если элемент не существует на странице, выдается ошибка тайм-аута, но не возвращается ни true
, ни false
.