Обновление ночного дозора с 1.3.2 до 1.3.4 нарушает существующий тест, особенно в объекте страницы - PullRequest
0 голосов
/ 27 марта 2020

Я использовал ночной дозор версии 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')
        },

1 Ответ

0 голосов
/ 17 апреля 2020

Мне удалось выяснить эту проблему. Я решил эту проблему, обновив командную функцию объекта страницы в asyn c с помощью await. пожалуйста, найдите пример в основном посте.

...