javascript 查找多个元素或类名

pu3pd22g  于 2023-01-29  发布在  Java
关注(0)|答案(2)|浏览(137)

我读过一些与此相关的不同的QAs,但似乎都不起作用。
我尝试使用mat-radio-checked类来定位mat-radio-button元素(Angular),然后选择内部文本。
在Chrome中,这很简单:
https://i.stack.imgur.com/Ev0iQ.png
https://i.stack.imgur.com/lVoG3.png
要在Playwright中找到第一个匹配的元素,我可以做如下操作:

let test: any = await page.textContent(
      "mat-radio-button.mat-radio-checked"
    );

    console.log(test);

但如果我试试这个:

let test: any = await page.$$(
      "mat-radio-button.mat-radio-checked"
    );

    console.log(test);
    console.log(test[0]);
    console.log(test[1]);
  });

它不返回一个我可以选择其内部文本的元素数组。
我需要能够找到该类的所有元素,这样我就可以使用expect来确保返回的内部文本是正确的,例如:

expect(test).toBe("Australian Citizen");
2vuwiymt

2vuwiymt1#

我发现这个问题是由于页面预先生成,元素不可用。所以我添加了一个waitForSelector:

await page.waitForSelector("mat-radio-button");

const elements = await page.$$("mat-radio-button.mat-radio-checked");
console.log(elements.length);
console.log(await elements[0].innerText());
console.log(await elements[1].innerText());
console.log(await elements[2].innerText());
ha5z0ras

ha5z0ras2#

public async validListOfItems(name) {
  await this.page.waitForSelector(name, {timeout: 5000});
  const itemlists = await this.page.$$(name);

  let allitems: string[]=new Array();

    for await (const itemlist of itemlists) {
        allitems.push(await itemlist.innerText());
    }
  return allitems;
  }

通过发送参数创建一个公共方法和调用。

相关问题