Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/388.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java Selenium WebDriver未使用nodePath/text()方法找到正确的元素_Java_Css_Selenium_Xpath - Fatal编程技术网

Java Selenium WebDriver未使用nodePath/text()方法找到正确的元素

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

我正在尝试在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>

文本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,"");