Я пытаюсь подождать браузер с browser.wait
с пользовательским ExpectedCondition следующим образом ФункцияReturningANumber возвращает только число, а numberToCheck - это номер для проверки номера.нестандартное ожидаемое условие транспортира с ошибкой
var conditionFn = function() {
return functionReturningANumber(param) === numberToCheck;
};
var condition = EC.and(conditionFn);
browser.wait(condition, 50000);
Но если я выполняю это, я получаю ошибку: fn(...).then is not a function
, который в основном говорит, что он ожидает обещание. Я посмотрел документацию о ExpectedConditions и пример для пользовательских один такой:
// You can define your own expected condition, which is a function that
// takes no parameter and evaluates to a promise of a boolean.
var urlChanged = function() {
return browser.getCurrentUrl().then(function(url) {
return url === 'http://www.angularjs.org';
});
};
И я не вижу, как здесь создается обещание. Я только вижу, что возвращается логическое значение, и в документации указано evaluates to a promise of a boolean
, что еще более смущает меня.
Это выше, чтобы ждать ответа от API, это вызвано тем, что тест запускает бэкэнд-процесс, который затем должен ждать. Если есть лучший способ сделать это, я бы очень признателен за лучший способ.
Я использую транспортир 3.1.1.
Любая помощь действительно исправлена.
Edit:
я нашел способ решить эту проблему, по какой-то причине логичное решение по @alecxe не работает, даже если это имеет смысл:
var numberFound = 0;
var done = false;
var check = function() {
numberFound = functionReturnungANumber(param);
if (numberFound != numberToCheck) {
setTimeout(check, 4000);
} else {
done = true;
}
};
check();
return done;
Если добавить это функцию и получить возвращаемое значение в тесте, которое вызывает эту функцию, и добавить browser.wait(function() { return done; });
там, где он работает.
Это не красиво, но по какой-то причине это единственное, что работает .... для меня как минимум.
Это не возвращает обещание, и я попытался это раньше, но теперь, если я что-то вроде этого: 'вара conditionFn = функция() { результата вара = functionReturningANumber (пары) === numberToCheck ; console.log (результат) результат возврата; }; browser.wait (conditionFn, 50000); ' он будет печатать' false' много раз, а затем просто выйти. Для тестирования я изменил, что это условие никогда не произойдет, но оно просто выходит, поскольку условие было бы выполнено. – Sheldan
@ Шелдан, пожалуйста, посмотрите обновление - дикое предположение, но попробуйте. Благодарю. – alecxe
Если я изменю его на это, он ничего не напечатает. Если я изменю его на 'conditionFn()', он выполнит, очевидно, так же, как и раньше, но только несколько раз, прежде чем он уйдет. Может быть, какой-то тайм-аут или количество казней, о которых вы, возможно, знаете? – Sheldan