夜巡中的全局变量.Node.js的 for 循环中出现问题



我目前正在使用node+nightwatch+selenium进行自动化。我遇到了一个场景:

我在守夜人中将一个数组定义为全局数组:

开发.js

'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;
};

当你运行for(var menu_link in data.checkforLink)时,变量'menu_link'将是一个字符串。

若要从具有字符串的对象获取属性,请使用"object[string]"语法。试试data.mainMenuLink[menu_link];

只要 data.mainMenuLink.link1 存在,这应该有效。

我注意到在您的问题中,所有属性都具有值"link1"。希望它们是代码中的不同属性名称。

我不确定您的实际问题是否仅与循环有关,或者您无法使用"var data = browser.globals"创建实例,因此您的变量数据没有 {} 值。如果是这种情况,请将您的 Dev.js 重命名为"globals.js",并在"nightwatch.json"中提供其作为键"globals_path"值的路径。

相关内容

  • 没有找到相关文章

最新更新