Selenium webdriver无法通过包含xpath标识元素

时间:2017-12-19 06:20:35

标签: java selenium xpath selenium-webdriver

我有下表行。我无法使用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()。

3 个答案:

答案 0 :(得分:1)

您可以尝试以下解决方法

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

但请注意,它只允许您跳过&nbsp;身份识别

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

答案 1 :(得分:1)

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

tldr;

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

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

答案 2 :(得分:0)

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

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

OR

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

注意:在 Java 中, xpath 不是 Xpath