一个Xpath表达式在selenium中不起作用,但在Firefox中有效

时间:2013-09-06 23:44:25

标签: html css xpath webdriver selenium-webdriver

我有一个关于xpath的问题。 在chrome中有这样的td:

<td class="dataCol col02">
"Hello world(notes:there is$)nbsp;"
<a href="xxxx">[View Hierarchy]</a>
</td>

但是当我在Firefox中检查相同的元素时,它没有$ nbsp和双引号;

<td class="dataCol col02">
Hello world
<a href="xxxx">[View Hierarchy]</a>
</td>

我使用FireFinder并使用xpath:

//td[text()='Hello world']

,它可以找到该元素。

但是当我使用selenium api 2.24时,它无法找到该元素。

by.xpath("//td[text()='Hello world']")
你知道吗? 谢谢!

2 个答案:

答案 0 :(得分:7)

尝试使用normalize-space()修剪前导和尾随空白字符:

//td[normalize-space(text())='Hello world']

根据不同的评论进行编辑:

这里有一个XPath表达式,它可能更适合一般情况:

//td[starts-with(normalize-space(.), 'Hello world')]

意味着它匹配<td>个节点,如果整个<td>的连接字符串内容,更少的前导和尾随空格,以&#34; Hello world&#34;

开头

答案 1 :(得分:0)

我会尝试使用contains()函数。 您的xpath将如下所示://td[contains(text(),'Hello world')]