我正在尝试在Web应用程序上获取特定的文本元素 . 我无法分享Html,但相关部分看起来像这样:
<div id ="user">
<div class="large columns">
<label for="object.disabled" class="readOnlyClass hide-label">
Text1
</label>
<div id="123x435q" class="readOnlyClass hide">
<input class="disabled-field" id="123x435qs" type="text" value="07/20/2017" disabled="">
</div>
<div class="class1">
<div>Text2</div>
"
07/10/2017
"
</div>
</div>
当我尝试通过// * [@ id ='user'] / div [2]的xpath找到element.getText() . trim()时
我得到的结果:Text2 07/10/2017
我正试图获得07/10/2017的文字 . 所以我尝试// * [@ id ='user'] / div [2] / text()[2]的xpath
当我在Chrome控制台中运行时:$ x(// * [@ id ='user'] / div [2] / text()[2])我的文本属性为07/10/2017 (我的期望) . 然而,通过Selenium运行时得到的是:Text1 .
所以有两个问题:1 . 为什么path / text()在Selenium中返回Text1但在Chrome控制台中没有? 2.如何让一个元素只返回class1 div节点中的日期文本而不返回Text2文本?
1 回答
1 - Selenium不支持TextNode . 您可以获得'Text1',因为它是元素'Label'的文本,而'Text2'是'Div'元素内的TextNode .
2 - 您必须使用其他解决方案来获取日期文本 . 请参阅下面的示例 .