2017-07-28 109 views
2

我想在Chrome中提取xpath查询$x('//td[@class="first"]/a/text()')的文本,但是当我运行此命令时,我看到的是text而不是锚链接的实际文本值。为什么google chrome不能打印我的XPath查询的文本()?

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

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

+0

我不是XPath的前pert,但是这看起来很有用:[xpath表达式从链接中选择文本](https://stackoverflow.com/a/2311502/717088)。此外,您的问题** _ only _ **存在于Google Chrome中吗? –

回答

1

$x()由于返回匹配给定XPath表达式HTML或XML元素的数组。这意味着它实际上是document.evaluate()的一个快捷方式。 所以,如果你想获得准确的元素,只是位置让出来阵列的

$ X(元素)[0]

这将帮助:https://getfirebug.com/wiki/index.php/$x

如果您要打印(或做其他的东西)通过定位在控制台中的所有文本元素 - 你可以叫forEach功能)

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

谢谢你的解释。因此,如果我打算将这个xpath表达式中的所有字符串连接到由'\ n'分隔的字符串中,我应该怎么做呢?对于记录,'texts = $ x('// td [@ class =“first”]/a/text()'); var q = []; for(var i = 0; i Sparrowcide

+0

试试这个:'$ x(“// td [@ class =”first“]/a”)。map(function(el){ return el.text})。join(“\ n”)' –

+0

您也可以使用'text.trim()'修饰空格 –

相关问题