#javascript #nightwatch.js #nightwatch
#javascript #nightwatch.js #ночной дозор
Вопрос:
Я пытаюсь вызвать команду объекта асинхронной страницы в моем тесте Nightwatch, но тест не выполняется. Как вы можете видеть из примера кода, я пытаюсь объединить несколько команд .pause вместе, но механизм цепочки не работает. Если я удалю ключевые слова ‘async’ и закомментирую код ‘await’, тогда команды цепочки будут работать. Таким образом, кажется, что использование ‘async’ нарушает цепочку команд. Есть ли решение для этого?
Тест Nightwatch …
module.exports = {
'Test Commmand Queue': async function (browser) {
browser.page.clients.sandbox.simpleTestPageObject().testCommandQueue() // async function
}
}
объектный файл страницы …
module.exports = {
elements: {},
commands: [{
testCommandQueue: async function () {
this
.pause(1)
.pause(1)
console.log("0001")
await this.pause(3000, function () {
console.log("0002")
})
console.log("0003")
}
}]
}
вывод …
Running: Test Commmand Queue
_________________________________________________
TEST FAILURE: 1 error during execution; 0 tests failed, 0 passed (4.939s)
TypeError: this.pause(...).pause is not a function
Nightwatch v 1.5.0
Ответ №1:
Как бы ни было привлекательно использовать команды цепочки, я предлагаю использовать this.api
или browser
.
Это звучит как рутинная работа, но в долгосрочной перспективе вы столкнетесь с меньшим количеством проблем с методами и пользовательскими командами.
Например, я не могу использовать команды цепочки, если мне нужно использовать expect
by Mocha
, поэтому я просто использую browser