puppeteer - Puppeteer Sharp - 获取包含 textContent 的元素
问题描述
我正在尝试研究如何有效地从包含特定字符串的页面中获取元素。
该元素位于<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();
推荐阅读
- jsf-2.2 - JSF 命令按钮 F 参数在 AJAX 重新呈现按钮时丢失 - 解决方法 ActionListener
- android - 如何修复 FusedLocationApi 片段中的内存泄漏问题?
- javascript - 使用 Office JS 在 Excel 中格式化标题
- qt - Qt/QML - 如何对 DelegateChooser 中的所有 DelegateChioces 应用相同的背景?
- r - 根据另一个 tibble 中的值子集 tibble 列
- node.js - 如何使用 Mongoose 更新 MongoDB 集合内的数组内的对象
- drop-down-menu - Primeng下拉显示输入字段在其中
- python - 用 python 创建一个不和谐的机器人。不能让机器人一次执行两项任务,但如果只运行一项任务,代码就可以工作
- android - Android Collection Widget 的基本示例
- typescript - 打字稿:在具有最高键值的字典数组中获取字典