有没有办法在Puppeteer中通过按钮的两个属性来查找按钮?

时间:2019-05-03 18:53:24

标签: node.js puppeteer

我试图通过使用puppeteer单击一个按钮,并且试图通过其两个属性aria-describedbytitle查找该按钮,因为它没有ID。 aria- describeby属性的值是我设置的名称,但是最后两个字符是自动将其自身更改为随机数的数字。

我搜索了正则表达式问题,JS问题,操纵up的代码,但没有实际起作用的东西。

我附带的最接近的是这个

//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

2 个答案:

答案 0 :(得分:1)

您可以尝试使用CSS选择器(^=)来启动:

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

答案 1 :(得分:0)

我缺少要执行的html代码,因此很难找到答案,但是每当我要单击需要两个参数的动态选择器时,我都会通过搜索包含文本:

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

await toClick[0].click();

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