javascript - Puppeteer - 如何评估返回文本的 XPath?
问题描述
我正在尝试从以下 Xpath 中获取文本作为字符串:
//*[contains(text(), 'mission')]/following-sibling::text()[1]
我努力了
let elHandle = await page.$x("//*[contains(text(), 'mission')]/following-sibling::text()[1]")
它返回一个ElementHandle<Element>[]
. 如何从这里导航到文本字符串?
解决方案
我假设您的 XPath 是正确的。所以:page.$x
返回一个数组(匹配元素:)<Promise<Array<ElementHandle>>>
,您需要第一个元素,因此您需要[0]
在整个元素句柄表达式之后添加。
它可以与 a 组合page.evaluate
来检索innerText
字符串。
const elHandleText = await page.evaluate(el => el.innerText, (await page.$x("//*[contains(text(), 'mission')]/following-sibling::text()[1]"))[0])
console.log(elHandleText)
关于是否可以使用 CSS 选择器完成的问题:如果您需要查找具有特定文本内容的元素,这是不可能的,XPath 的contains方法是解决方案。
推荐阅读
- javascript - 选择破折号“-”后的所有内容 RegEx || JavaScript
- python - 加载“来自变量导入 *”时如何有效地修复“未定义或从 * 导入定义”警告?
- android - 无法在 android 模块中创建字符串资源
- python - 如何在熊猫数据框中对一列进行分组,然后对另一列进行排序值?
- mysql - MySQL:在 WHERE IN 子句中使用复合键的查询非常慢
- java - 是否可以在 Android 应用程序中手动验证服务器的凭据?
- python - 动态导入模块
- powershell - 重新排列和组合 powershell 自定义对象
- python - 在 Python 中重塑 Julia 存储的数组
- c# - Azure WebJobs SDK 3,尝试添加 BlobTrigger 和相关连接字符串