首页 文章

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

提问于
浏览
-1

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

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

相关问题