Nightwatch允许您运行基于页面对象的测试,也就是说,您可以将公共测试函数外部化,并在常规测试中使用它们。这可以通过使用
page_objects_path
'属性。我添加了常见的“登录”功能,并在项目中的示例“单个测试”中使用了它
here
.
:
将公共函数放在.js文件中,并将其放在文件夹下(例如:tests/pages)/登录.js)并在nighwatch配置文件中传递文件夹路径,如下所示:
nightwatch_config = {
src_folders : [ 'tests/single' ],
page_objects_path: ['tests/pages'],
下面是一个常见登录函数的示例(登录.js):
var loginCommands = {
login: function() {
return this.waitForElementVisible('body', 1000)
.verify.visible('@userName')
.verify.visible('@password')
.verify.visible('@submit')
.setValue('@userName', 'Enter Github user name')
.setValue('@password', 'Enter Github password')
.waitForElementVisible('body', 2000)
}
};
module.exports = {
commands: [loginCommands],
url: function() {
return 'https://github.com/login';
},
elements: {
userName: {
selector: '//input[@name=\'login\']',
locateStrategy: 'xpath'
},
password: {
selector: '//input[@name=\'password\']',
locateStrategy: 'xpath'
},
submit: {
selector: '//input[@name=\'commit\']',
locateStrategy: 'xpath'
}
}
};
module.exports = {
'Github login Functionality' : function (browser) {
//create an object for login
var login = browser.page.login();
//execute the login method from //tests/pages/login.js file
login.navigate().login();
//You can continue with your tests below:
// Also, you can use similar Page objects to increase reusability
browser
.pause(3000)
.end();
}
};