2016-01-11 60 views
0

的文本我有一个HTML如下** **关从获取元素中的文本 - 排除内部元件

<div class="someClass"> 
    LNAME, FNAME MNAME 
    <a class="button" onclick="#">This is Button</a> 
</div> 

我想要得到的div.someClassLNAME, FNAME MNAME内的文本。

但我发现了以下

LNAME, FNAME MNAME 
This is Button 

我使用driver.findElement(By.cssSelector("div.someClass")).getText();

我知道,上面的代码是给我div.someClass元素的文本作为一个整体。

我该如何提取div.someClass的值,而不是内部元素。比如我给,我想输出

LNAME, FNAME MNAME 

回答

1
//a[@class='button']/preceding-sibling::text() 
1

getText() - 按定义 - 这个元素的可见(即不通过CSS隐藏)的innerText,包括子元素,无任何前导或尾随空白。

对于从子元素上的文字,你必须自己处理,像解释如下:

public String getTopElementText(By by) 
{ 
    WebElement topElement = driver.findElement(by); 
    String originalText = topElement.getText(); 

    // get all child elements who has innerText and stringlength is greater than 0 
    List<WebElement> children = topElement.findElements(By.xpath("*[string-length(text()) > 0]")) 

    for(WebElement element : children) 
     orginalText = originalText.replace(element.getText(), ""); 

    return originalText; 
}