Puppeteer Sharp - 获取包含文本内容的元素

标签 puppeteer puppeteer-sharp

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

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

实现此目的的唯一方法是循环遍历每个 <a>标签并检查 textContent 是否匹配。

<a>Match this text foo</a>

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

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

大家有更好的解决办法吗?

最佳答案

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();

关于Puppeteer Sharp - 获取包含文本内容的元素,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57495878/

相关文章:

javascript - 如何使用 Nodejs 抓取 QlikView 表?

node.js - Puppeteer - Handlin page.waitForSelector() 失败

当控制台应用程序关闭时,Puppeteer-Sharp 在进程任务管理器中仍然出现许多 Chrome 实例

azure - 已发布的 .net Core Azure 应用服务 (Linux) 没有权限

c# - 如何从 puppeteer-sharp 中获取可读的浏览器/页面错误?

node.js - Puppeteer - Chrome |无法打开 X 显示器 | Ubuntu 20.04

google-chrome - chrome DevTools 协议(protocol)中的浏览器目标是什么?

javascript - 使用 Puppeteer 和 Node.JS 在网站上的 iFrame 中找不到隐藏的输入元素

puppeteer-sharp - IIS 中的 PuppeteerSharp

c# - Puppeteer-Sharp 库没有工作,也没有在 web 服务 (wcf) 项目中创建页面