【问题标题】:How to take XPath of element that is between br tags with <strong> in account如何将 br 标记之间的元素的 XPath 与 <strong> 考虑在内
【发布时间】:2014-11-20 14:57:04
【问题描述】:

我的代码是这样的,

<div>
    <strong> Text1: </strong>
    1234
    <br>
    <strong> Text2: </strong>
    5678
    <br>
</div>

其中数字 1234 和 5678 是动态生成的。当我采用 Text2 的 XPath:5678 时,它给了我 /html/body/div[7]/div/div[2]/div/div[2]/div[2]/br[2] 之类的信息。这对我不起作用。我只需要使用“Text2:5678”的 XPath。任何帮助将不胜感激。 (我正在使用 selenium webdriver 和 C# 来编写我的测试脚本)

【问题讨论】:


  • 标签在上面的sn-p中没有内容。所以这将无法从您的 xpath 中找到任何文本。并且数值确实在div而不是br下面。所以,要使用xpath获取文本,您需要获取div数据并通过编码获取所需的数据。
  • 我是新手,你能不能给我一些建议。类似于 //br/preceding-sibling::*/text() 的解决方案会有帮助吗?
  • @prabh:如果你执行它,你的解决方案会出错。
  • 通过使用 x-path ,您将无法找到 div 下的数值。所以,告诉我,你的 div 中是否只有这两个文本值。或者,这些数值的数量可以改变(例如,现在,我可以看到 2 个数值“1234”和“5678”。这些数据是否会一直有 2 个数值)
  • @Anil Chandna:数值每次都会改变,我需要使用文本 2 之后的数值,即 5678,每次都是新的

标签: xpath selenium-webdriver tags


【解决方案1】:

我第二次@Anil 上面的评论。文本 "Text2:" 是可检索的,因为它位于 "strong" 元素中。但是,"5678" 属于 div 并且不是 "strong" 或 "br" 的 innerHTML。

因此,要检索文本 "Text 2: 5678",您必须检索 "div" 的 innerHTML/text 并相应地对其进行修改以获得所需的文本。

下面是一个 Java 代码 sn-p 来检索文本:-

    WebElement ele = driver.findElement(By.xpath("//div"));

    System.out.print(ele.getText().split("\n")[1]; //Splitting using newline as the split string.

我希望你能用 C# 来表述上述内容。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-03-14
    • 2014-03-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2010-10-08
    相关资源
    最近更新 更多