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

时间:2017-07-28 06:22:30

标签: google-chrome xpath

我正在尝试在Chrome中提取xpath查询的文本$x('//td[@class="first"]/a/text()')但是当我运行此命令时,我看到text而不是锚链接的实际文本值。

当我运行s.toString()时,我看到[object Text],[object Text],[object Text],[object Text]...

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

3 个答案:

答案 0 :(得分:7)

因为$x()返回与给定XPath表达式匹配的HTML或XML元素数组。这意味着它实际上是document.evaluate()的快捷方式。 因此,如果您想获得精确的元素,只需从阵列中取出位置

  

$ X(元件)[0]

这会有所帮助:https://developers.google.com/web/tools/chrome-devtools/console/command-line-reference#xpath

如果你想打印(或做其他东西)定位器在控制台中找到的所有文本元素 - 你可以只调用forEach函数)

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

答案 1 :(得分:0)

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

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

答案 2 :(得分:0)

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

$x('//td[@class="first"]/a/text()').map(a=>a.textContent)