selenium Webdriver 中的动态文本

Dynamic Text in selenium Webdriver

我正在自动化 Web 应用程序,有一次需要帮助。

当我登录网络应用程序时。它要求输入用户名(经理 ID),然后该经理 ID 继续在主页上闪烁。管理员 ID 随不同的登录凭据而变化。

所以我需要继续检查经理 ID。

<tr>
<td>
<center>
<table width="100%" align="center">
<tbody>
<tr/>
<!--comments: To link all the screens-->
<tr>
<tr class="heading3" align="center">

<td style="color: green">Manger Id : mngr8499</td>

</tr>
</tbody>
</table>
</td>
</tr>
</tbody>
</table>
</body>

您在 DOM 中看到的经理 ID 显示为经理 ID:XXXX

所以请帮助我如何找到这些 "XXXX",仅来自经理 ID:XXXX

据我了解,我会使用 .getText() 方法获取 td 中的 4 个字符,方法是:

driver.findElement(By.cssSelector(".heading3 > td")).getText().substring(17);

如果您担心 html 的刷新,请考虑使用:

WebDriverWait wait = new WebDriverWait(driver, 10)
wait.until(ExpectedConditions.stalenessOf(By.cssSelector(".heading3 > td"));

当之前的值从DOM中消失时,可以使用新的选择器来获取刷新后的值。

根据我的理解,在使用 getText() 后,您会得到 Manger Id : mngr8499 但您不希望每次 Manager ID 都带有文本和唯一的 ID。我的实现是首先复制任何字符串变量中的文本,然后使用 String.replaceAll() 方法我可以获得所需的文本。

下面是相同的实现,如果我对问题的理解有误,请告诉我。

WebElement mngrid = driver.findElement(By.xpath("//tr[@class='heading3']/td"));
String actual_text = mngrid.getText();
actual_text= actual_text.replace("Manger Id :"," ");
System.out.println(actual_text);