【问题标题】:Selenium webdriver Unable to identify elements by xpath containing  Selenium webdriver 无法通过包含的 xpath 识别元素
【发布时间】:2018-02-21 10:27:21
【问题描述】:

我有下表行。我无法使用 XPath 识别 th

<tr>
<th>My&nbsp;Home</th>
<th>My&nbsp;School</th>
<th>Home</th>
</tr>

我试过了:

mydriver.findElement(By.xpath("//tr/th[text()='My Home']"));
mydriver.findElement(By.xpath("//tr/th[text()='My\u00a0Home']"));
mydriver.findElement(By.xpath("//tr/th[text()='My${nbsp}Home']"));

我也尝试过 xpath 中的 contains()。

【问题讨论】:

  • 你每分钟都在改变你的问题,你怎么能指望别人回答你的问题?

标签: java selenium xpath selenium-webdriver


【解决方案1】:

您可以尝试以下解决方法

//th[starts-with(text(), "My") and substring(text(), 4)="Home"]

但请注意,它只允许您跳过&amp;nbsp; 标识

如果您不熟悉此语法,则表示 th 节点的文本以子字符串 "My" 开头,并且从第 4 个字符开始,文本等于 "Home"

【讨论】:

    【解决方案2】:

    要将th 识别为My&amp;nbsp;Home,您可以尝试以下任一方法:

    mydriver.findElement(By.xpath("//tr/th[contains(text(),'Home')]"));
    

    mydriver.findElement(By.xpath("//tr/th[contains(.,'Home')]"));
    

    注意:在 Java 中是 xpath 而不是 Xpath

    【讨论】:

      【解决方案3】:

      我已经回答了一个与here非常相似的问题

      tldr;

      mydriver.findElement(By.xpath("//tr/th[translate(text(),'\u00A0', ' ')='My Home']"));
      

      这会将不间断空格 (&amp;nbsp;) 替换为实际空格 ,并将字符串与结果进行匹配。

      【讨论】:

        猜你喜欢
        • 2020-06-20
        • 1970-01-01
        • 1970-01-01
        • 2016-06-19
        • 1970-01-01
        • 2016-04-05
        • 1970-01-01
        • 2014-08-19
        • 1970-01-01
        相关资源
        最近更新 更多