【问题标题】:How can I call an xpath using i to increment the variable name in a for loop using Javascript?如何使用 i 调用 xpath 以使用 Javascript 在 for 循环中增加变量名称?
【发布时间】:2017-11-01 02:30:14
【问题描述】:

这是我的简单全局变量,由 EX 调用:this.u5boys outside of a loop。

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 的值?

【问题讨论】:

  • 你得到什么错误?
  • 嗨@Moekanan,感谢您的回复。上面的代码运行没有错误,但不是根据我的需要将 this.boysactions 的值更改为“option[contains(text(), '5 Boys')]”,而是显示为“this.u5boys”。我觉得我可能只是缺少某种转义字符或引号。
  • 你在哪里保存的:u5boys: { xpath: "option[contains(text(), '5 Boys')]" }
  • u5boys: { xpath: "option[contains(text(), '5 Boys')]" } 保存在与 for 循环相同的文件中,但在其父函数和循环之外。

标签: javascript for-loop inheritance codeceptjs


【解决方案1】:

它是“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 中的namewindow 上下文中可用。

【讨论】:

    【解决方案2】:

    您需要使用 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);
    })
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-04-14
      • 1970-01-01
      • 2014-04-15
      • 2021-01-21
      • 1970-01-01
      • 2015-04-23
      相关资源
      最近更新 更多