我试图在Nightwatch js中使用页面对象,并在其中创建自己的命令。由于某种原因,Nightwatch现在似乎无法识别浏览器上的标准命令,并给我不同命令的类型错误。我的代码在做什么错了?
我已经在这里尝试了不同的操作,例如在命令前添加“ this”或“ browser”,但没有帮助。我的代码已经经历了许多版本,我什至不再确定在搜索错误后尝试了什么。
我的pageObject:
const homePageCommands = {
deleteAllListItems: function (browser) {
browser
.elements('css selector', '#mytodos img', function (res) {
res.value.forEach(elementObject => {
browser.elementIdClick(elementObject.ELEMENT);
});
})
.api.pause(1000)
return this;
}
};
module.exports = {
url: "http://www.todolistme.net"
},
elements: {
myTodoList: {
selector: '#mytodos'
},
deleteItemButton: {
selector: 'img'
}
},
commands: [homePageCommands]
};
我的测试:
require('../nightwatch.conf.js');
module.exports = {
'Validate all todo list items can be removed' : function(browser) {
const homePage = browser.page.homePage();
homePage.navigate()
.deleteAllListItems(homePage)
// I have not continued the test yet because of the error
// Should assert that there are no list items left
}
};
定制命令的预期行为是遍历元素,然后单击它。 实际结果:
TypeError: browser.elements is not a function
at Page.deleteAllListItems (/pageObjects/homePage.js:18:14)
at Object.Validate all todo list items can be removed (/specs/addToList.js:8:14)
at processTicksAndRejections (internal/process/next_tick.js:81:5)
并且:
Error while running .navigateTo() protocol action: invalid session id
答案 0 :(得分:0)
好像您需要在此行上将browser
传递给deleteAllListItems
函数而不是homePage
:
homePage.navigate()
.deleteAllListItems(homePage)