Java Xpath获取第二个url,其中包含href标记中的匹配文本
html页面具有分页链接,一个设置在页面顶部,另一个设置在页面底部 使用HtmlUnit,我目前正在使用Java Xpath获取第二个url,其中包含href标记中的匹配文本,java,xpath,htmlunit,Java,Xpath,Htmlunit,html页面具有分页链接,一个设置在页面顶部,另一个设置在页面底部 使用HtmlUnit,我目前正在使用getByAnchorText(“1”)获取页面上的HtmlAnchor 顶部的一些链接有问题,所以我想使用XPath引用底部的链接 nextPageAnchor = (HtmlAnchor) page.getByXPath(""); 如何使用xpath引用页面上的第二个链接 我需要使用AnchorText引用链接,这样的链接: <a href="....">33</a&g
getByAnchorText(“1”)获取页面上的HtmlAnchor代码>
顶部的一些链接有问题,所以我想使用XPath引用底部的链接
nextPageAnchor = (HtmlAnchor) page.getByXPath("");
如何使用xpath引用页面上的第二个链接
我需要使用AnchorText引用链接,这样的链接:
<a href="....">33</a>
href有随机文本,是一个javascript函数,所以我不知道它会是什么
xpath有可能做到这一点吗?非常简单:
(//a)[2]
//a
获取页面上的所有锚点,[2]
获取第二个锚点(它是一个索引的锚点,而不是零索引的锚点,因此2实际上是第二个锚点,而不是第三个锚点,例如,在数组中)
如果您想获得包含33
文本的链接,可以使用:
//a[./text() = "33"]
有关完整的xpath定义,请参见
编辑
为了回应Alexandre的评论,您可以使用
(//a[./text() = "33"])[2]
这将首先选择文本为33的所有标签,然后选择其中的第二个
编辑2
注意:位置路径//第[1]段与位置路径/后代::第[1]段的含义不同。后者选择第一个子代para元素;前者选择作为其父级第一个para子级的所有子级para元素
马库斯克确实是正确的。上面的引号来自上面引用的xPath定义 选择文档中任意位置的第二个元素:
(//a)[2]
要在href
属性中选择具有特定文本的第二个元素,请执行以下操作:
(//a[@href='…')[2]
请注意,parantises是必需的,表达式//a[2]
不会执行您想要的操作:它将选择所有a
元素,这些元素是任何父元素的第二个a
元素。如果您的输入是
<p>Link <a href="one.html">One</a></p>
<p>Link <a href="two.html">Two</a> and <a href="three.html">Three</a>.</p>
<p>Link <a href="four.html">Four</a> and <a href="five.html">Five</a>.</p>
链接
链接和
链接和
(//a)[2]
将返回第二个链接(two.html),而//a[2]
将返回第三个和第五个链接(three.html和five.html),因为这两个链接都是其父链接的第二个子链接。也许我们希望第二个链接包含给定的文本,但问题不太清楚,谢谢,实际上,我刚刚返回了数组,如果它有2个元素,则得到第2个元素。这样会安全一点,但是谢谢你的提示<代码>(//a)[2]
应改为使用。表达式//a[2]
将选择任何父节点的第二个a
子节点,而不是整个文档中的第二个a
元素。