Java 如何通过getText()从html中的多个子节点提取动态文本
我们有一个包含一些硬编码文本的Div和一个包含一些动态文本值的span(请参阅下面的HTML代码以了解更多信息)。 结果文本为:1个任务将从“XYZ”更新为“ABC” 但是当我使用Selenium定位器检索时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”的任务 更新 取消 在尝
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();