我在nightwatch中使用页面对象,在nightwatch.conf.js中配置page_objects_path
,但当我引用这些已定义的元素时,得到了错误。我不知道为什么,我使用vue-cli来构建这个项目。下面是我的配置:
nightwatch.conf.js
...
page_objects_path: 'test/e2e/pages',
...
页面对象文件register.js
module.exports = {
elements: {
genderField: '.common-picker:first-child',
genderPicker: '.picker',
genderOptionLast: '.picker-item:last-child',
genderPickerConfirmButton: '.picker-toolbar span:last-child',
genderPickerCancelButton: '.picker-toolbar span:first-child'
}
}
在测试文件中使用页面对象:
'select a gender option': function (browser) {
browser
.assert.hidden('@genderPicker')
.click('@genderField')
.pause(1000)
.click('@genderOptionLast')
.click('@genderPickerConfirmButton')
.assert.containsText('@genderField', '女士')
.pause(1000)
.end()
}
错误信息:
发布于 2018-08-17 18:01:12
页面对象文件应该有每个元素的关键字选择器。
module.exports = {
elements: {
genderField: {
selector: '.common-picker:first-child'
},
genderPicker: {
selector: '.picker'
},
genderOptionLast: {
selector: '.picker-item:last-child'
},
genderPickerConfirmButton: {
selector: '.picker-toolbar span:last-child'
},
genderPickerCancelButton: {
selector: '.picker-toolbar span:first-child'
}
}
}
发布于 2018-08-21 07:58:47
您需要将页面对象定义为测试顶部的常量,然后调用registerPage对象中的元素:
'select a gender option': function (browser) {
const registerPage = browser.page.register();
registerPage.assert.hidden('@genderPicker')
registerPage.click('@genderField')
browser.pause(1000)
registerPage.click('@genderOptionLast')
registerPage.click('@genderPickerConfirmButton')
registerPage.assert.containsText('@genderField', '女士')
browser.pause(1000)
browser.end()
}
如果您使用CSS来处理所有事情,那么就不需要在页面对象中使用选择器(看起来就是这样)。
https://stackoverflow.com/questions/51840023
复制相似问题