Javascript 夜视中的全局变量。node.js的for循环中的问题
我目前正在使用node+nightwatch+selenium实现自动化。 我遇到了一个场景: 我在夜视中将数组定义为全局数组: Dev.jsJavascript 夜视中的全局变量。node.js的for循环中的问题,javascript,node.js,for-loop,global-variables,nightwatch.js,Javascript,Node.js,For Loop,Global Variables,Nightwatch.js,我目前正在使用node+nightwatch+selenium实现自动化。 我遇到了一个场景: 我在夜视中将数组定义为全局数组: Dev.js 'checkforLink':{ link1:"Some Xpath 1", link1:"Some Xpath 2", link1:"Some Xpath 3", link1:"Some Xpath 4" }, 在自定义命令中的自定义js脚本中,我正在执行一个for循环,以从全局变量获取此链接: exports.com
'checkforLink':{
link1:"Some Xpath 1",
link1:"Some Xpath 2",
link1:"Some Xpath 3",
link1:"Some Xpath 4"
},
在自定义命令中的自定义js脚本中,我正在执行一个for
循环,以从全局变量获取此链接:
exports.command = function(callback) {
browser = this;
var data = browser.globals;
console.log("Before all loop");
for(var menu_link in data.checkforLink) {
linkss1 = data.checkforLink.link1; // returns `Some Xpath 1`
reqvar = data.mainMenuLink.menu_link; // Even though menu_link have value as link1, reqvar is undefined
browser.click('######') // Click the path
}
return this;
};
我不确定您的实际问题是否仅与循环相关,或者您无法使用“var data=browser.globals”创建实例,因此您的变量数据没有{}值。如果是这种情况,请将您的Dev.js重命名为“globals.js”,并在“nightwatch.json”中提供一个路径作为键“globals_path”的值。当您运行(data.checkforLink中的变量menu\u link),变量“menu\u link”将是一个字符串 要从带有字符串的对象获取属性,请使用“object[string]”语法。请尝试
data.mainMenuLink[menu\u link];
只要data.mainMenuLink.link1存在,该功能就可以工作
我注意到在你的问题中,所有属性都有值'link1'。希望它们在你的代码中是不同的属性名