有没有办法在Puppeteer中找到其两个属性的按钮



我正在尝试使用Puppeteer单击一个按钮,并且我正在尝试通过其两个属性aria-describedbytitle查找它,因为它没有ID。ARIA描述的属性的值是我设置的名称,但是,最后两个字符是自动更改其Elves的数字。

我已经搜索了Regexp问题,JS问题,伪造者的代码,但实际上没有任何奏效。

我最接近的是:

//v1
const arr = await page.$x('//button[starts-with("aria-describedby", "someName")]');
await arr[1].click();
//v2
page.click('button[aria-describedby="someName20"][title="Click button"]');

我尝试了不同的代码,但是几乎总是我得到undefinedno node found for selector

您可以尝试使用CSS starting-with selector(^=(:

button[aria-describedby^="someName"][aria-label="Click button"]

我缺少html代码,因此很难查明答案,但是每当我有动态的选择器单击需要两个参数的动态选择器时,我都会搜索文本:

let toClick = await page.$x("//button[contains(text(),'someName20')][contains(text(),'Click button')]");
await toClick[0].click();

注意: text((方法仅在文本节点上工作(即 <a>someName20</a>(,但是您可以在括号中互换第一个或第二个表达式以查询属性的值,而不是元素文本值。

最新更新