Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/373.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何使用Javascript在for循环中使用I递增变量名来调用xpath?_Javascript_For Loop_Inheritance_Codeceptjs - Fatal编程技术网

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

如何使用Javascript在for循环中使用I递增变量名来调用xpath?,javascript,for-loop,inheritance,codeceptjs,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标识符 ctrlClick5

这里是我的简单全局变量,由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);
    }

  },
ctrlClick5To6Folders(){
对于(变量i=5;i<7;i++){
boysaction=“this.u”+i+“boys”;
I.点击(boysaction);
}
},
在运行I.click()函数之前,如何告诉它处理this.u5boys的值

它的名字是“this.u5boys”

考虑到这一点,这是正常的:

for(var i = 5; i < 7; i++){
  boysaction = "this.u" + i + "boys";
  I.click(boysaction);
}
这里,“boysaction”是
字符串
,它表示
窗口
上下文中可用的
变量
名称

它的名字是“this.u5boys”

考虑到这一点,这是正常的:

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

这里,“boysaction”是
字符串
,表示
窗口
上下文中可用的
变量
名称

您需要使用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。如果要调用costure函数,可以执行以下操作:

Object.keys(globals).forEach((key) => I.click(globals[key].xpath)); 
Object.keys(globals).forEach((key) => {
    if(key != "u5boys" && key != "u6boys")
        return;

    console.log(globals[key].xpath);
})
如果你只想要第五个和第六个,可以这样做:

Object.keys(globals).forEach((key) => I.click(globals[key].xpath)); 
Object.keys(globals).forEach((key) => {
    if(key != "u5boys" && key != "u6boys")
        return;

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

您需要使用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。如果要调用costure函数,可以执行以下操作:

Object.keys(globals).forEach((key) => I.click(globals[key].xpath)); 
Object.keys(globals).forEach((key) => {
    if(key != "u5boys" && key != "u6boys")
        return;

    console.log(globals[key].xpath);
})
如果你只想要第五个和第六个,可以这样做:

Object.keys(globals).forEach((key) => I.click(globals[key].xpath)); 
Object.keys(globals).forEach((key) => {
    if(key != "u5boys" && key != "u6boys")
        return;

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

你有什么错误?嗨@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循环的同一个文件中,但在它的父函数和循环之外。你会得到什么错误?Hi@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循环相同的文件中,但不在它的父函数和循环之外。