2017-07-10 6 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]

を私は結果を得る:私はちょうど2017年7月10日のテキストを取得しようとしているテキスト2 2017年7月10日

を。私はこれをChromeコンソールで実行します:$ x(// * [@ id = {user}}/'user']/div [2]/text()[2])私は自分のテキストノードを07/10/2017のテキスト属性で取得します。しかし、私がSeleniumを実行するときに得られるものは、Text1です。

2つの質問 1. SeleniumではText1を返すが、ChromeコンソールではText/Text()を返さないのはなぜですか? 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,""); 
関連する問題