2017-09-10 34 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是的,舒尔。 –

回答

0

请检查一下,让我知道。

我认为信息会自动与类似同一类的DOM追加,

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

,目标是拿到最后的附加消息的文本。我们可以知道消息的实例数量并获取最后一个消息的文本。

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