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