gpt4 book ai didi

javascript - 在 Nightwatch 中使用页面对象命令内部的函数

转载 作者:太空宇宙 更新时间:2023-11-04 15:49:45 27 4
gpt4 key购买 nike

忽略 selectUser 函数的位置。我还在尝试玩弄它。如何使用页面对象命令内的函数?之前该函数在每个命令函数中重复了 5 次,但为了简洁起见,显然需要更改,我只是不知道如何更改。

页面对象片段:

var selectUser = function(userName, password) {
return this.waitForElementVisible('@usernameField')
.setValue('@usernameField', userName)
.setValue('@passwordField', password)
.click('@signOnButton')
.waitForElementVisible('@eventTaskManager');
};

module.exports = {
elements: {
usernameField: '#UserName',
passwordField: '#Password',
signOnButton: 'input[value="Sign On"]',
cancelButton: 'a[href$="/cancel"]',
errorMessage: '.icon-warning',
eventTaskManager: '.concierge'
},

commands: [{
signInAsUniregisteredUser: function() {
selectUser(unregisteredUserName, unregisteredUserPass);
},

signInAsRegisteredUser: function() {
selectUser(registeredUserName, prodRegisteredPass);
},

signInAsUnregisteredUser_Regression: function() {
selectUser(unregisteredUserName, unregisteredUserPass);
},

signInAsRegisteredUser_Regression: function() {
selectUser(registeredUserName, prodRegisteredPass);
},

signInAsRegisteredUser_Production: function() {
selectUser(prodRegisteredUser, prodRegisteredPass);
}
}]
};

最佳答案

首先,对于登录功能,只有 2 个断言,即登录“ok”或登录“fail”(未注册、错误的凭据、缺少用户名...),因此您只需将其用于页面对象。

    var pageCommands = {
tryToLogin: function(userName, password) {
return this.waitForElementVisible('@usernameField')
.setValue('@usernameField', userName)
.setValue('@passwordField', password)
.click('@signOnButton');
},
assertLoginSuccesfully: function() {
return this.waitForElementVisible('@eventTaskManager'); // login pass
},
assertLoginUnSuccesfully: function() {
return this.waitForElementVisible('@errorMessage'); // login fail
}
};

module.exports = {
elements: {
usernameField: '#UserName',
passwordField: '#Password',
signOnButton: 'input[value="Sign On"]',
cancelButton: 'a[href$="/cancel"]',
errorMessage: '.icon-warning',
eventTaskManager: '.concierge'
},

commands: [pageCommands],
};

在您的测试用例中:

const loginPage = browser.page.login();
const dataForTest = require('./data.json');
const credentials = {
username : dataForTest.username ,
password : dataForTest.password
};

login.tryToLogin(credentials.username,credentials.password)
.assertLoginSuccesfully() // if data from dataForTest is correct

这种做法将通过将所有内容存储在 data.json 中(或任何您想要的内容)来让您远离硬值。

关于javascript - 在 Nightwatch 中使用页面对象命令内部的函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43232741/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com