如何为文本one4编写XPath

时间:2019-01-23 11:30:46

标签: selenium xpath selenium-chromedriver xpath-2.0 xpath-1.0

我想使用XPath在文本后面找到链接。

我想使用XPath在文本后面找到链接。例如,通过“ what10”找到“ one4”。您只能使用文本消息“ what10”,但不能以任何其他方式使用它,因为此页面上的信息将更改。我想得到的是“ one4”链接节点。

<body>
<p>
<a href="/dy/dy5.jsp?funid=50">so</a>
<br>what1 <a href="/dy/dy5.jsp?funid=34+">one</a>
<br>what2<a href="/dy/dy5.jsp?funid=35+">two</a>
<br>what11<a href="/dy/dy5.jsp?funid=43+">one4</a>
<br>what3<a href="/dy/dy5.jsp?funid=36+">three</a>
<br>what4<a href="/dy/dy5.jsp?funid=37+">one1</a>
<br>what5<a href="/dy/dy5.jsp?funid=38+">two2</a>
<br>what6<a href="/dy/dy5.jsp?funid=39+">three3</a>
<br>what7<a href="/dy/dy5.jsp?funid=40+">one3</a>
<br>what8<a href="/dy/dy5.jsp?funid=41+">two3</a>
<br>what9<a href="/dy/dy5.jsp?funid=42+">three3</a>
<br>what10<a href="/dy/dy5.jsp?funid=43+">one4</a>
<br><a href="/dy/dy5.jsp?funid=44+">just return</a>
<br></p>
</body>

出于某些特殊原因,我想通过的是what10的文本定位到one4。

请帮助我。

2 个答案:

答案 0 :(得分:0)

硒不支持xpath-2.0,但使用xpath-1.0

您要引用的元素,即包含文本 what10 的元素是文本节点,而 Selenium 不能将其用作参考。因此,将不可能找到参照文本 what10 的文本为 one4 的节点。或者,如果所需节点始终是最后一个节点,但最后一个节点,则可以使用以下解决方案:

  • xpath

    driver.findElement(By.xpath("//body/p//a[position()=last()-1]"));
    

更新

根据@MosheSlavin的反问题,以下是快照,用于演示 XPath 的工作原理:

xpath_position

答案 1 :(得分:0)

您可以在下面的行中使用

WebElement loginLink = driver.findElement(By.linkText("one4"));