我试图在网络应用上获取特定的文字元素。我无法分享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>
当我尝试通过xpath // * [@ id =&#39; user&#39;] / div [2]
找到element.getText()。trim()时我得到结果:Text2 2017年7月10日
我试图获得07/10/20的文字。所以我尝试了// * [@ id =&#39; user&#39;] / div [2] / text()[2]
的xpath当我在Chrome控制台中运行时:$ x(// * [@ id =&#39; user&#39;] / div [2] / text()[2])我的文本节点是2017年10月7日的文字属性(我期待)。但是,通过Selenium运行时得到的是:Text1。
所以有两个问题: 1.为什么path / text()在Selenium中返回Text1但在Chrome控制台中没有? 2.如何获取一个元素只返回class1 div节点中的日期文本而不返回Text2文本?
答案 0 :(得分:0)
1 - Selenium不支持TextNode。您可以获取'Text1',因为它是元素'Label'的文本,而'Text2'是'Div'元素内的TextNode。
2 - 您必须使用其他解决方案来获取日期文本。请参阅下面的示例。
String outerText = driver.findElement(by.cssSelector("#user > div.class1")).getText();
String innerText = driver.findElement(by.cssSelector("#user > div.class1 > div")).getText();
String dateText = outerText.replace(innerText,"");