HTML
<div class="rc-anchor-light">
<div id="accessible-status" class="rc-anchor-aria-status" aria-hidden="true">requires verification.</div>
</div>
我的预期
从div“requires verification.
”
尝试了以下定位器,但我没有达到预期目的。
唯一ID,所以我厌倦了id得到空结果
String accessText = driver.findElement(By.id("accessible-status")).getText();
使用类名获取空结果
String accessText = driver.findElement(By.className("rc-anchor-aria-status")).getText();
请建议我如何获得价值。
答案 0 :(得分:2)
目标div
节点的文本内容可能会动态生成。尝试使用任何文本实现元素的ExplicitWait:
WebDriverWait wait = new WebDriverWait(webDriver, 10);
WebElement divNode = wait.until(ExpectedConditions.visibilityOfElementLocated(By.xpath("//div[@id='accessible-status' and normalize-space()]"));
String accessText = divNode.getText();
如果元素包含来自正在开始的文本,但它只是隐藏,getText()
将不会返回文本。在这种情况下,您可以尝试
String accessText = driver.findElement(By.id("accessible-status")).getAttribute("textContent");
答案 1 :(得分:0)
根据您分享的 HTML 来提取文本需要验证。,您需要使用定位器策略来识别唯一的 WebElement 并诱导WebDriverWait,ExpectedConditions设置为visibilityOfElementLocated(By locator)
, WebElement 可见在 HTML DOM 中,最后使用getAttribute()
方法来提取文本。您可以使用以下代码行:
System.out.println(new WebDriverWait(driver, 20).until(ExpectedConditions.visibilityOfElementLocated(By.xpath("//div[@class='rc-anchor-light']/div[@class='rc-anchor-aria-status' and @id='accessible-status']"))).getAttribute("innerHTML"));