Я использую nightwatch для написания тестов на селен (как и вы).Метод выполнения Nightwatch
У меня есть обратный вызов, который я хочу, в конечном счете, вернуть значение (пользовательская команда в nightwatch). Проблема заключается в том, что переменная retValue
никогда не меняет своего значения, даже если я вижу изменение значения внутри console.log
var _someCallBack = function() {
var retValue = false;
browser
.variousNightwatchTasks() //place holder for other things
.execute(function (d) {
//Other custom work injected into the page
return $("span.header_title").length > 0; //I need this true|false
}, [], function(r) {
retValue = r.value; //has the changes; the following outputs as expected
console.log("r = {0} {1}".format(JSON.stringify(r), retValue));
});
//Other things ...
console.log(retValue); //always false which is the problem.
return retValue; //This return needs to execute. I must return the value.
}
Я уверен, что это связано с какой-то нюанс яваскрипта я отсутствующего так, как я могу обойти эту проблему и что происходит? (Первое более важно, чем последнее.)
Обновление:return retValue
- необходимый бит. Эта функция используется в обратном вызове для пользовательской команды nightwatch, которая использует возвращаемое значение в операторе if
.
Я боюсь, что это ничего не решило. Функция (r) {обратный вызов (r.value); } 'часть всегда работала нормально. После этого он считывает значение. Даже в вашей конфигурации (вложенный вызов) получается то же самое поведение. Мне нужно вернуть 'r.value' из' _someCallBack' –
Невозможно вернуть 'r.value' из' _someCallBack' и никогда не будет. Другой альтернативой было бы вернуть обещание, но вызывающая функция должна будет решить эту проблему. Можете ли вы привести пример использования? –