Я использовал ночной дозор версии 1.3.2. Все тесты работали нормально, пока я не обновил ночной дозор до последней версии 1.3.4. Тест разбивается специально в объекте страницы. Я проверил заметки о выпуске для night-watch 1.3.4, и у него есть новая функция поддержки объекта страницы с async/await - https://github.com/nightwatchjs/nightwatch/releases.
Я считаю, что полученное сообщение об ошибке указывает на завертывание объекта страницы с асин c жду. Я хотел бы знать, как я могу обновить свой существующий объект страницы с помощью async / await. например, на страницу объекта с asyn c await будет действительно полезно ссылаться. Ниже я перечислил мой пример теста с объектом страницы и сообщением об ошибке, которое работало нормально перед обновлением ночного дозора до последней версии. Любые идеи или помощь будут благодарны.
Test
it('Verify Login', async (browser)=> {
await this.loginTest.loginSuccess(browser.globals.Username,browser.globals.Password);
this.homepage.expect.element('@profile').to.be.visible;
});
Page-Object
module.exports = {
url:function () {
return this.api.launchUrl;
},
elements:{
btnSignInRegister:'#SignInRegister',
btnSelectBusiness:'#business',
body:'body',
txtUsernameInput:'#login-username',
txtPasswordInput:'#login-password',
signInBtn:'#SignIn',
pageBody:'body',
myAccountBtn:'#myAccount',
},
commands:[{
clickSignInRegister(){
return this
.click('@btnSignInRegister')
},
waitForBody(){
return this
.waitForElementVisible('@pageBody')
},
loginSuccess(username,pwd){
return this
.navigate()
.waitForBody()
.click('@btnSignInRegister')
.waitForElementVisible('@btnSelectBusiness',5000)
.click('@btnSelectBusiness')
.setValue('@txtUsernameInput',username)
.setValue('@txtPasswordInput',pwd)
.click('@signInBtn')
.waitForBody()
},
logoutSuccess(){
return this
.waitForElementVisible('@btnProfile',5000)
.click('@btnProfile')
.waitForElementVisible('@btnLogout',5000)
.click('@btnLogout')
}
}]
}
Проблема решена моя обертывание функции с асин c жду
async loginSuccess(username,pwd){
await this.navigate()
await this.waitForBody()
await this.click('@btnSignInRegister')
//await this.pause(7000);
await this.waitForElementVisible('@btnSelectBusiness',5000)
await this.click('@btnSelectBusiness')
await this.waitForElementVisible('@txtUsernameInput',5000)
await this.setValue('@txtUsernameInput',username)
await this.setValue('@txtPasswordInput',pwd)
await this.click('@signInBtn')
await this.waitForBody()
},
async logoutSuccess(){
await this.waitForElementVisible('@btnProfile',5000)
await this.click('@btnProfile')
await this.waitForElementVisible('@btnLogout',5000)
await this.click('@btnLogout')
},