jquery 如何使用webdriverio迭代元素数组

pgky5nke  于 2023-03-17  发布在  jQuery
关注(0)|答案(1)|浏览(126)

无法迭代wdio返回的数组元素。我希望能够将数组中的任何元素作为参数传递给将来的函数,并单击匹配条件的元素。
下面的代码在控制台中显示了这个错误“不能用选择器“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;
    }
  }
}
ffx8fchx

ffx8fchx1#

经过大量的调试,我注意到我没有点击下拉组件,因此内部的HTML元素还没有呈现。所以只要确保点击'ng-select'选项显示显示。

相关问题