Java 如何通过getText()从html中的多个子节点提取动态文本

Java 如何通过getText()从html中的多个子节点提取动态文本,java,selenium,selenium-webdriver,webdriver,webdriverwait,Java,Selenium,Selenium Webdriver,Webdriver,Webdriverwait,我们有一个包含一些硬编码文本的Div和一个包含一些动态文本值的span(请参阅下面的HTML代码以了解更多信息)。 结果文本为:1个任务将从“XYZ”更新为“ABC” 但是当我使用Selenium定位器检索时 final String actual = $("#bulk_update_confirmation").text(); 然后,实际值仅包含“要从更新到的任务”。缺少所有动态文本 HTML代码如下(使用的浏览器为chrome) 1要从“XYZ”更新为“ABC”的任务 更新 取消 在尝

我们有一个包含一些硬编码文本的Div和一个包含一些动态文本值的span(请参阅下面的HTML代码以了解更多信息)。 结果文本为:1个任务将从“XYZ”更新为“ABC”

但是当我使用Selenium定位器检索时

final String actual = $("#bulk_update_confirmation").text();
然后,实际值仅包含“要从更新到的任务”。缺少所有动态文本

HTML代码如下(使用的浏览器为chrome)


1要从“XYZ”更新为“ABC”的任务

更新 取消
在尝试提取全部文本之前,例如,1要从“XYZ”更新为“ABC”的任务。您可以诱导WebDriverWait使所有三个子元素可见,并且可以使用以下解决方案:

new WebDriverWait(driver, 10).until(ExpectedConditions.and(
    ExpectedConditions.visibilityOfElementLocated(By.xpath("//span[@id='taskCountSpan']")),
    ExpectedConditions.visibilityOfElementLocated(By.xpath("//span[@id='oldStatusSpan']")),
    ExpectedConditions.visibilityOfElementLocated(By.xpath("//span[@id='newStatusSpan']"))
));

您可以使用
Webelement.getText()
方法提取文本,您可以得到如下预期结果

String actual =driver.findElement(By.id("bulk_update_confirmation")).getText();

您好,谢谢您的更新,但它给出了相同的结果。据我所知,这两个选项都是相同的,您可以使用driver.findElement或$(“#bulk_update_confirmation”)定位器将以相同的方式工作。谢谢,您的建议对我有效,现在我了解了问题,span未填充,因此缺少文本。等待填充跨度就完成了这个任务。
String actual =driver.findElement(By.id("bulk_update_confirmation")).getText();