一尘不染

如何使用selenium从不包含子元素的元素获取文本

selenium

的HTML

<div id='one'>
    <button id='two'>i am button</button>
    <button id='three'>i am button</button>
    i am div
</div>

driver.findElement(By.id('one')).getText();

阅读 510

收藏
2020-06-26

共1个答案

一尘不染

我已经看到这个问题在过去大约一年左右的时间里弹出了几次,我想尝试编写此函数…所以就到这里了。它接受父元素,并删除每个子元素的textContent,直到剩下的是textNode为止。我已经在您的HTML上对其进行了测试,并且可以正常工作。

/**
 * Takes a parent element and strips out the textContent of all child elements and returns textNode content only
 * 
 * @param e
 *            the parent element
 * @return the text from the child textNodes
 */
public static String getTextNode(WebElement e)
{
    String text = e.getText().trim();
    List<WebElement> children = e.findElements(By.xpath("./*"));
    for (WebElement child : children)
    {
        text = text.replaceFirst(child.getText(), "").trim();
    }
    return text;
}

你叫它

System.out.println(getTextNode(driver.findElement(By.id("one"))));
2020-06-26