Playwright - 查找多个元素或类名称

Rus*_*ell 5 javascript automation browser-automation typescript playwright

我读过一些与此相关的不同的质量保证,但似乎没有一个有效。

我正在尝试使用名为 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);
Run Code Online (Sandbox Code Playgroud)

但如果我尝试这个:

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

    console.log(test);
    console.log(test[0]);
    console.log(test[1]);
  });
Run Code Online (Sandbox Code Playgroud)

它不返回我可以选择其内部文本的元素数组。

我需要能够找到该类的所有元素,以便我可以使用 Expect 来确保返回的内部文本正确,例如:

    expect(test).toBe("Australian Citizen");
Run Code Online (Sandbox Code Playgroud)

Rus*_*ell 4

我发现问题是由于页面提前生成而元素不可用。所以我添加了一个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());
Run Code Online (Sandbox Code Playgroud)