从 JSON 数据中提取选择器变量名称
Extracting selector variable names from JSON data
给出以下 json:
{
"contract": [
{"fieldName": "contractYear", "fieldValue": "2020"},
...
],
"ruleSet": [
...
]
}
以及以下内容:
staticCompany.contract.forEach(index => {
if (this.index.fieldName.getText() == index.fieldValue) {
validationCount ++;
}
});
我知道这个。操作员不会喜欢我正在尝试做的事情。有没有办法提取 fieldName 以便我可以用它来点击同名的选择器?
我在 wdio v5 上的 Node 12.13 中执行此操作。
在您的 forEach()
语句中,this
指的是 window,因此您不想使用它。
另外,for each只是传入数组的索引号。如果您想查看 forEach()
中的值,您还需要包含该元素(好吧,从技术上讲,在您的 for each 中,index
正在带回该元素,因为它首先列出,但在语法上它如果您使用 index
而实际上它不是索引,则会造成混淆。
所有这些都是有效的选项:
forEach((element) => { ... } )
forEach((element, index) => { ... } )
forEach((element, index, array) => { ... } )
有关详细信息,请参阅 MDN: Array.ForEach()。
在下面的代码片段中,我在 contract
数组中添加了第二个 Object 元素,以向您展示如何访问该数组中的每个 Object 元素,并从中获取值。
const staticCompany = {
"contract": [{
"fieldName": "contractYear",
"fieldValue": "2020"
},
{
"fieldName": "contractYear",
"fieldValue": "2021"
},
],
"ruleSet": []
}
staticCompany.contract.forEach((element, index) => {
console.log({
index: index,
fieldName: element.fieldName,
fieldValue: element.fieldValue
})
});
给出以下 json:
{
"contract": [
{"fieldName": "contractYear", "fieldValue": "2020"},
...
],
"ruleSet": [
...
]
}
以及以下内容:
staticCompany.contract.forEach(index => {
if (this.index.fieldName.getText() == index.fieldValue) {
validationCount ++;
}
});
我知道这个。操作员不会喜欢我正在尝试做的事情。有没有办法提取 fieldName 以便我可以用它来点击同名的选择器?
我在 wdio v5 上的 Node 12.13 中执行此操作。
在您的 forEach()
语句中,this
指的是 window,因此您不想使用它。
另外,for each只是传入数组的索引号。如果您想查看 forEach()
中的值,您还需要包含该元素(好吧,从技术上讲,在您的 for each 中,index
正在带回该元素,因为它首先列出,但在语法上它如果您使用 index
而实际上它不是索引,则会造成混淆。
所有这些都是有效的选项:
forEach((element) => { ... } )
forEach((element, index) => { ... } )
forEach((element, index, array) => { ... } )
有关详细信息,请参阅 MDN: Array.ForEach()。
在下面的代码片段中,我在 contract
数组中添加了第二个 Object 元素,以向您展示如何访问该数组中的每个 Object 元素,并从中获取值。
const staticCompany = {
"contract": [{
"fieldName": "contractYear",
"fieldValue": "2020"
},
{
"fieldName": "contractYear",
"fieldValue": "2021"
},
],
"ruleSet": []
}
staticCompany.contract.forEach((element, index) => {
console.log({
index: index,
fieldName: element.fieldName,
fieldValue: element.fieldValue
})
});