我有一个现成的代码,我正在尝试使用selenium为它编写测试。这就是我的代码在chrome的元素选项卡中的样子:
<table id="xyz">
<tbody>
<tr>...</tr>
"
I am not able to retrieve this text.
"
</tbody>
</table>
在Chrome的控制台标签中执行此操作$x("//*[contains(text(),'I am not able to retrieve this text')]");
不会显示任何结果。如果文本是在div,span等中定义的话,我可以通过此命令获取文本。(区分大小写也不是问题)。
在使用jQuery('tbody').append( abc() );
和abc()函数的tbody中附加文本的代码中,以这种方式返回此文本pqr.html();
现在我的问题是我应该写什么xpath表达式才能获取此文本?我正在寻找一个纯xpath表达式,即没有java函数等。
答案 0 :(得分:0)
contains()
期望奇异值作为第一个参数。 HTML元素中可能包含多个文本节点子节点,在这种情况下,您尝试的XPath将仅评估第一个文本节点。根据发布的HTML示例,将要评估的<tbody>
的第一个文本节点由换行符和一些空格组成,因此您的XPath没有考虑<tbody>
匹配并且没有返回结果。< / p>
为避免上述问题,请在谓词中使用contains()
作为单个文本节点,如下所示:
//*[text()[contains(.,'I am not able to retrieve this text')]]
或者这种方式,如果你想返回文本节点本身而不是父元素:
//*/text()[contains(.,'I am not able to retrieve this text')]
答案 1 :(得分:0)