2017-09-10 21 views
0

新しい追加要素のテキストが文字列と等しいかどうかを確認するにはどうすればよいですか? 私はチャットの中で言葉を探したいですが、私は同じ要素を指しているように見えます。動的に追加された文字列を検索するにはどうすればよいですか?

while (true){ 
     try { 
      WebDriverWait wait = new WebDriverWait(driver, 5); 
      wait.until(ExpectedConditions.textToBePresentInElementLocated(By.xpath("//span[@class='msg-body']"), "Hello")); 
      System.out.println("Found Hello"); 

     } catch (Exception e) { 
      System.out.println("Nothing found"); 
     } 
      Thread.sleep(100); 
    } 

チャットHTMLの一部は

<li class="msg-chat-message"> 
      <span class="user role-user"> 
       <img class="user-logo" src="https://steamcdn-a.akamaihd.net/steamcommunity/public/images/avatars/d6/d6e4e034324f1e2abe161a8239f243a2f48e08e9.jpg"> 
        <div class="user-level-container"> 
         <div class="user-level level-item level-70">75</div> 
        </div> 
        <span class="drop-down-container _3_options"> 
         <ul class="user-dropdown-invisible"> 
          <li class="user-dropdown-entry">Stats</li> 
          <li class="user-dropdown-entry">Tip</li> 
          <li class="user-dropdown-entry">Ignore</li> 
          <!-- react-text: 928 --> 
          <!-- /react-text --> 
         </ul> 
        </span> 
        <span class="user-name"> 
         <span> 
          <!-- react-text: 931 -->RePo 
          <!-- /react-text --> 
          <span class="icon-balanceicon namepromotion" title="This user has activated the Name Promotion"></span> 
          <!-- react-text: 933 --> 
          <!-- /react-text --> 
         </span> 
         <!-- react-text: 934 -->: 
         <!-- /react-text --> 
        </span> 
       </span> 
       <span class="msg-body">all of you</span> 
      </li> 
      <li class="msg-chat-message"> 
       <span class="user role-user"> 
        <img class="user-logo" src="https://steamcdn-a.akamaihd.net/steamcommunity/public/images/avatars/1a/1a5e80deb58be484e49ea9a9434faa7a6528654b.jpg"> 
         <div class="user-level-container"> 
          <div class="user-level level-item level-50">50</div> 
         </div> 
         <span class="drop-down-container _3_options"> 
          <ul class="user-dropdown-invisible"> 
           <li class="user-dropdown-entry">Stats</li> 
           <li class="user-dropdown-entry">Tip</li> 
           <li class="user-dropdown-entry">Ignore</li> 
           <!-- react-text: 946 --> 
           <!-- /react-text --> 
          </ul> 
         </span> 
         <span class="user-name"> 
          <span> 
           <!-- react-text: 949 -->Anonymous 
           <!-- /react-text --> 
           <span class="icon-balanceicon namepromotion" title="This user has activated the Name Promotion"></span> 
           <!-- react-text: 951 --> 3 
           <!-- /react-text --> 
          </span> 
          <!-- react-text: 952 -->: 
          <!-- /react-text --> 
         </span> 
        </span> 
        <span class="msg-body">kk</span> 
       </li> 
       <li class="msg-chat-message"> 
        <span class="user role-user"> 
         <img class="user-logo" src="https://steamcdn-a.akamaihd.net/steamcommunity/public/images/avatars/44/44c705474e17ebe8a2a9ef70467c20ee5add283e.jpg"> 
          <div class="user-level-container"> 
           <div class="user-level level-item level-50">52</div> 
          </div> 
          <span class="drop-down-container _3_options"> 
           <ul class="user-dropdown-invisible"> 
            <li class="user-dropdown-entry">Stats</li> 
            <li class="user-dropdown-entry">Tip</li> 
            <li class="user-dropdown-entry">Ignore</li> 
            <!-- react-text: 964 --> 
            <!-- /react-text --> 
           </ul> 
          </span> 
          <span class="user-name"> 
           <span> 
            <!-- react-text: 967 -->Rrubinski. for EM 
            <!-- /react-text --> 
            <span class="icon-balanceicon namepromotion" title="This user has activated the Name Promotion"></span> 
            <!-- react-text: 969 --> 
            <!-- /react-text --> 
           </span> 
           <!-- react-text: 970 -->: 
           <!-- /react-text --> 
          </span> 
         </span> 
         <span class="msg-body">which one u want?</span> 
        </li> 

(チャットがメッセージで埋め尽くされた時)これまでのところ、私は要素のリストを作成し、それのサイズは400の項目に等しいです。しかし、400回ループするのではなく、新しい要素を追跡することが可能かどうかを知りたい。

elementList = driver.findElements(By.xpath("//span[@class='msg-body']")); 
      for (WebElement element: elementList) { 
       if (element.getText().equals("nice")) { 
        System.out.println("Done"); 
        System.out.println("List size: " + elementList.size()); 
       } 
      } 
      Thread.sleep(200); 
+0

チャットウィンドウのHTML DOMを教えてください。 –

+0

@santhoshkumarはい、shure。 –

答えて

0

これをよく確認してください。

私はそのメッセージが

<span class="msg-body">which one u want?</span> 

、同様の同じクラスで、DOMに自動的に追加され、目的は、最後の追加メッセージのテキストを取得することであると仮定します。私たちはメッセージのインスタンスの数を知ることができ、最後のメッセージのテキストを得ることができます。

int size = driver.findElements(By.xpath("//span[@class='msg-body']")).size(); 

最後のメッセージのテキストを取得するようになりました。

String message = driver.findElement(By.xpath("//span[@class='msg-body'][" + size + "]")).getText(); 

後で、文字列メッセージの検証を行うユーザーJava APIまたはTestNGメソッド。

これが役に立ちます。ありがとう。

+0

最後のコードブロックの 'size'は変数ではなく文字列です。 – JeffC

+0

はい、変数として渡す必要があります –

+0

私の編集をチェックすると、私の意味がわかります。 – JeffC

関連する問題