如何从webelement中单独检索可见文本

How to retrieve visible text alone from webelement?

本文关键字:检索 文本 单独 webelement      更新时间:2023-09-26

如何使用java从Web元素(Selenium)中仅获取UI上可见的文本(不包括隐藏文本)?我尝试过使用javascript。例如:

<span class='message'>
this part is visible
<span>
visible
</pan>
<span>
hidden
</span>
visible
</span>

我只想从类为"message"的span中检索"this part is visible visible visual visible"。

根据最新WebDriver规范的getElementText章节,如果您只获取元素的文本,selenium将只返回可见文本:

driver.findElement(By.id("myid")).getText();

这段代码对我有用。

public String getVisibleTextFromElement(WebElement elem)
{
    String visibleText= (String) getJavaScriptExecutor().executeScript("var clone = $(arguments[0]).clone();"
            + "clone.appendTo('body').find(':hidden').remove();"
            + "var text = clone.text();"
            + "clone.remove(); return text;", elem);
    visibleText=visibleText.replaceAll("''s+", " ");
    return visibleText;
}