2017-07-10 73 views
-1

我试图在Web应用程序上获取特定的文本元素。我不能共享HTML,但相关的部分看起来是这样的:Selenium WebDriver找不到正确的元素与nodePath/text()方法

<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> 

当我试图找到element.getText()修剪()由// * [@ ID =“用户”的的XPath ]/DIV [2]

我得到的结果:文本2 2017年7月10日

我想要得到的只是2017年7月10日的文字。所以我尝试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文本?

回答

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,""); 
相关问题