为了账号安全,请及时绑定邮箱和手机立即绑定

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

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

慕桂英4014372 2022-06-05 16:05:57
我使用的是 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-Objectmodule.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')        }    }]}
查看完整描述

2 回答

?
慕神8447489

TA贡献1780条经验 获得超1个赞

从这个相关的 GitHub 问题:https ://github.com/nightwatchjs/nightwatch/issues/2370


If 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.


查看完整回答
反对 回复 2022-06-05
?
有只小跳蛙

TA贡献1824条经验 获得超8个赞

我能够弄清楚这个问题。我通过将页面对象命令功能升级为带有等待的异步功能解决了这个问题。请在主帖中找到示例。



查看完整回答
反对 回复 2022-06-05
  • 2 回答
  • 0 关注
  • 102 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信