Java Selenium WebDriver未使用nodePath/text()方法找到正确的元素
我正在尝试在web应用程序上获取特定的文本元素。我无法共享Html,但相关部分如下所示:Java Selenium WebDriver未使用nodePath/text()方法找到正确的元素,java,css,selenium,xpath,Java,Css,Selenium,Xpath,我正在尝试在web应用程序上获取特定的文本元素。我无法共享Html,但相关部分如下所示: <div id ="user"> <div class="large columns"> <label for="object.disabled" class="readOnlyClass hide-label"> Text1 </la
<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>
文本1
文本2
"
07/10/2017
"
当我试图通过//*[@id='user']/div[2]的xpath查找元素.getText().trim()时
我得到的结果是:Text2
2017年10月7日
我只想得到2017年10月7日的文本。因此,我尝试使用xpath/*[@id='user']/div[2]/text()[2]
当我在Chrome控制台中运行此命令时:$x(//*[@id='user']/div[2]/text()[2])我得到的文本节点的文本属性为07/10/2017(我所期望的)。然而,当运行Selenium时,我得到的是:Text1
所以有两个问题:
1.为什么path/text()在Selenium中返回Text1,而在Chrome控制台中不返回?
2.如何让元素只返回class1 div节点中的日期文本,而不返回Text2文本 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,"");