如何使用i来调用xpath来使用Javascript在for循环中增加变量名?

时间:2017-10-31 16:45:58

标签: javascript for-loop inheritance codeceptjs

这是我的简单全局变量,由EX调用: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的值?

2 个答案:

答案 0 :(得分:1)

  

它出现在&#34; this.u5boys&#34;

这是正常的,鉴于此:

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

boysaction = "this.u" + i + "boys"; &#34; boysaction&#34; 在这种情况下只是一个字符串对象。

这样的事情应该有效

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
}

此处,&#34; boysaction&#34; string,代表name中可用的variable的{​​{1}}上下文。

答案 1 :(得分:1)

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

试试这个:

log()

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

InterfaceOne

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

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));