Puppeteer Sharp-获取包含textContent的元素

时间:2019-08-14 13:37:02

标签: puppeteer puppeteer-sharp

我正在尝试找出如何有效地从包含特定字符串的页面中获取元素。

该元素位于<a>标记中,但是它的类/标识是随机生成的。

我能做到这一点的唯一方法是遍历每个<a>标签,并检查textContent是否匹配。

<a>Match this text foo</a>

我也尝试过使用xPath表达式,但是我可以弄清楚如何使用返回的元素。

//a[contains(text(),'Match this text')]

有人有更好的解决方案吗?

1 个答案:

答案 0 :(得分:3)

page.$x(expression)方法返回:<Promise<Array<ElementHandle>>>。因此,您可以按索引获取特定元素,也可以仅通过销毁分配来获取特定元素。

例如:

const links = await page.$x('//a[text()="Specific Text"]'); // returns: <Promise<Array<ElementHandle>>>
await links[0].click();

甚至在进行销毁分配时效果更好:

const [ link ] = await page.$x('//a[text()="Specific Text"]');
await link.click();