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