如何检查新追加元素的文本是否等于字符串? 我想在聊天中找到一个单词,但看起来我指的是同一个元素。
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 :(得分: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方法来验证字符串消息。
希望这会有所帮助。感谢。