如何使用 i 调用 xpath 以使用 Javascript 在 for 循环中递增变量名称?

How can I call an xpath using i to increment the variable name in a for loop using Javascript?

这是我在循环外调用的简单全局变量:this.u5boys。

u5boys: {
    xpath: "option[contains(text(), '5 Boys')]"
  },
  u6boys: {
    xpath: "option[contains(text(), '6 Boys')]"
  },

这是一个简单的循环,它会在 运行 时尝试点击文字字符串 "this.u5boys"。我如何让它将 this.u5boys 处理成上述同一文件中的全局 xpath 标识符?

ctrlClick5To6Folders(){

    for(var i = 5; i < 7; i++){
      boysaction = "this.u" + i + "boys";
      I.click(boysaction);
    }

  },

如何告诉它在 运行 调用 I.click() 函数之前处理 this.u5boys 的值?

it comes out as "this.u5boys"

这很正常,鉴于此:

for(var i = 5; i < 7; i++){
  boysaction = "this.u" + i + "boys";
  I.click(boysaction);
}

boysaction = "this.u" + i + "boys"; "boysaction" 在此上下文中只是一个字符串对象。

像这样的东西应该可以工作

for(var i = 5; i < 7; i++){
  boysaction = "this.u" + i + "boys";
  I.click(window[boysaction].xpath);//this one
  I.click(this[boysaction].xpath);//or this one
}

这里,"boysaction"string,表示variable中可用的window =]上下文。

您需要使用Object.keys获取密钥并使用它们。

试试这个:

var globals = {
  u5boys: {
    xpath: "option[contains(text(), '5 Boys')]"
  },
  u6boys: {
    xpath: "option[contains(text(), '6 Boys')]"
  }
}

Object.keys(globals).forEach((key) => console.log(globals[key].xpath));

这将在控制台中打印出 xpath。如果你想调用一个服装函数,你可以这样做:

Object.keys(globals).forEach((key) => I.click(globals[key].xpath)); 

如果你只想要第 5 和第 6 个,可以这样做:

Object.keys(globals).forEach((key) => {
    if(key != "u5boys" && key != "u6boys")
        return;

    console.log(globals[key].xpath);
})