我正在尝试使用Puppeteer单击一个按钮,并且我正在尝试通过其两个属性aria-describedby
和title
查找它,因为它没有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"]');
我尝试了不同的代码,但是几乎总是我得到undefined
或no 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>
(,但是您可以在括号中互换第一个或第二个表达式以查询属性的值,而不是元素文本值。