Selenium Webdriver 无法通过包含以下内容的  xpath 识别元素



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

<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()='Myu00a0Home']"));
mydriver.findElement(By.xpath("//tr/th[text()='My${nbsp}Home']"));

我也尝试过在 xpath 中包含()。

您可以尝试以下解决方法

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

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

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

要用文本标识thMy&nbsp;Home您可以尝试以下任一操作:

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

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

注意:在Java中,它xpath不是Xpath

我在这里回答了一个与此非常相似的问题

TLDR;

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

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

最新更新