我正在尝试在使用nightwatchjs时将其他url属性作为函数添加到我的页面对象中。
像:
module.exports = {
url: function() {
return this.api.launchUrl + '/content/site1.xhtml';
},
cancelUrl: function() {
return this.api.launchUrl + '/content/cancel_site1.xhtml';
}
}
无论如何,nightwatch无法获得第二个属性cancelUrl,即未定义。
为什么会这样? nightwatch不应该能够访问该属性,因为它只是一个返回字符串的函数调用,或者我误解了javascript或特殊的页面对象概念?
- 我知道每个站点都应该有一个页面对象,所以不应该有第二个站点。无论如何,我想了解为什么这在技术上不起作用。
答案 0 :(得分:1)
不确定我能回答"为什么" (除了说当nightwatch将你的页面对象加载为全局可用时,它必须包装你的js文件并过滤已知的功能)但我可以提供一个解决方案:向你的页面对象添加一个命令具有所需的功能。例如:
let pageCommands = {
cancelUrl: function() {
return this.api.launchUrl + '/content/cancel_site1.xhtml';
}
};
module.exports = {
commands: [pageCommands],
...
}
这不是页面命令的典型用法,但您的测试将能够访问页面对象实例上的cancelUrl
函数。
更多页面命令here