Webdriver - 使用java获取div值

时间:2018-02-19 12:44:32

标签: java selenium xpath selenium-webdriver

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();

请建议我如何获得价值。

2 个答案:

答案 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 并诱导WebDriverWaitExpectedConditions设置为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"));