【问题标题】:How to write a XPath for the text one4如何为文本 one4 编写 XPath
【发布时间】:2019-06-16 23:39:09
【问题描述】:

我想使用 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。

请帮帮我。

【问题讨论】:

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


    【解决方案1】:

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

    您试图引用的元素,即包含文本 what10 的元素是 Text Node 并且 Selenium 不能将其用作一个参考。因此,参考文本 what10 查找文本为 one4 的节点是不可能的。作为替代方案,如果所需节点始终是 last but one 节点,您可以使用以下解决方案:

    • xpath

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

    更新

    根据@MosheSlavin 计数器问题,这里是演示 XPath 完美运行的快照:

    【讨论】:

    • 您是对的“文本节点和 Selenium 不能将其用作参考”但是您发布的 xpath 也不起作用......
    • @MosheSlavin ...您发布的 xpath 不起作用... 不确定您所说的 不起作用 到底是什么意思。你看到任何错误吗?我已经用快照更新了答案,以演示 xpath 如何准确识别节点完美。如果您有任何问题,请告诉我。
    • 我知道!我起初使用linkText,但OP希望它链接到文本,所以我尝试了但我的XPath没有工作我尝试了你的:xpather.com/B2MYU9Ul,但由于某种原因它没有工作......我没有删除我的答案因为我的主要部分是getAttribute...我想知道你用什么工具测试xpaths?
    • @DebanjanB 但有时此页面上的最后一个&lt; a &gt; 不是我想要的。本页只能根据what10判断one4
    • 可能您仍然需要更新我们/关于您的用例的问题,因为有 2 个节点的文本为 one4what11 相关联什么10 :)
    【解决方案2】:

    你可以使用下面的行

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2023-03-14
      • 2021-11-05
      • 2021-05-18
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多