将 night-watch 从 1.3.2 升级到 1.3.4 打破了现有的测试,特别是在页面对象中

我使用的是 1.3.2 版的守夜人。在我将 night-watch 更新到最新版本 1.3.4 之前,所有测试都运行良好。测试特别在页面对象中中断。我已经检查了 night-watch 1.3.4 的发行说明,它具有支持页面对象的新功能async/await - https://github.com/nightwatchjs/nightwatch/releases.


我相信我收到的错误消息指出要用异步等待包装页面对象。我想知道如何使用 async/await 更新我现有的页面对象。一个带有异步等待的 eg-page 对象将非常有帮助。我在下面列出了带有页面对象和错误消息的示例测试,在将 night-watch 更新到最新版本之前工作正常。任何想法或帮助将不胜感激。


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')

        }

    }]

}


慕桂英4014372
浏览 104回答 2
2回答

慕神8447489

从这个相关的 GitHub 问题:https ://github.com/nightwatchjs/nightwatch/issues/2370If async/await is being used, chaining is not possible anymore, because the commands will return a Promise. But in your testcase, there's no need to use await, since you're not using the result of the command.

有只小跳蛙

我能够弄清楚这个问题。我通过将页面对象命令功能升级为带有等待的异步功能解决了这个问题。请在主帖中找到示例。
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

JavaScript