如何使用 webdriverio 遍历元素数组

问题描述 投票:0回答:1

不能遍历 wdio 返回的数组元素。 我希望能够将数组中的 eny 元素作为参数传递给未来的函数,然后单击符合条件的元素。

以下代码在控制台中显示此错误“无法使用选择器“ng-drop-panel”在元素上调用 $,因为找不到元素。

let element = $$('ng-select');
for await (const item of element[0].$('ng-dropdown-panel').$('div').$$('div')[1].$$('div')) {
  if( await item.getText() == Field.CODE){
    item.click();
    break;
  }
}

下面的代码工作正常,但我不想将元素作为参数传递下去,这样我就可以避免重复的代码行。

let element = $$('ng-select')[0];
for await (const itemof element.$('ng-dropdown-panel').$('div').$$('div')[1].$$('div')) {
  if( await item.getText() == Field.CODE){
    item.click();
    break;
  }
}

我已经试过了但是没用:

public async formFilling(){
  let element = $$('ng-select');
  await this.selectValueInDropDown(element[0].$('ng-dropdown-panel').$('div').$$('div')[1].$$('div'), "ADD");
}
public async selectValueInDropDown(dropDownSelector:any, dropDownValue: string){
  for await (const item of dropDownSelector) {
    if( await item.getText() == dropDownValue){
      item.click();
      break;
    }
  }
}
jquery angular typescript e2e-testing webdriver-io
1个回答
0
投票

经过大量调试后,我注意到我没有单击下拉组件,因此内部 HTML 元素尚未呈现。因此,只需确保单击“ng-select”以显示要显示的选项。

© www.soinside.com 2019 - 2024. All rights reserved.