为什么 google chrome 不打印我的 XPath 查询的 text() ?

问题描述 投票:0回答:3

我正在尝试在 Chrome 中提取 xpath 查询的文本,

$x('//td[@class="first"]/a/text()')
,但是当我运行此命令时,我看到
text
,而不是锚链接的实际文本值。

当我跑步时

s.toString()
我看到
[object Text],[object Text],[object Text],[object Text]...

如何在 xpath 中获取它们的字符串值?

google-chrome xpath
3个回答
29
投票

因为

$x()
返回与给定 XPath 表达式匹配的 HTML 或 XML 元素数组。它是 document.evaluate() 的快捷方式。 如果你想获取精确的元素,只需从数组中按位置获取即可

$x(元素)[0]

这可能会有所帮助:https://developer.chrome.com/docs/devtools/console/utilities#xpath-function

如果您想打印(或执行任何其他操作)控制台中定位器找到的所有文本元素 - 您只需调用

forEach
函数即可:

$x('//a/text()').forEach(function(el){console.log(el)})
$x('//a/text()').forEach(el => console.log(el))

9
投票

在这些情况下使用以下命令:
- 元素的文本存储在数据中。
- 您想要修剪数据中的前导和尾随空格。
- 您想要轻松地复制粘贴由换行符分隔的控制台的输出。

console.log($x(<pathToElement>/text()').map(function(el){return el.data.trim()}).join("\n"))

7
投票

您可以使用 .map(a=>a.textContent) 来提取您的需求。

$x('//td[@class="first"]/a/text()').map(a=>a.textContent)
© www.soinside.com 2019 - 2024. All rights reserved.