从元素中获取文本 - 排除内部元素

时间:2016-01-11 09:22:21

标签: java selenium testing selenium-webdriver automation

我有一个HTML如下

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

我想在div.someClass LNAME, FNAME MNAME内找到文字。

但我正在关注

LNAME, FNAME MNAME 
This is Button

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

我知道上面的代码给了我整个div.someClass元素的文本。

如何提取just div.someClass的值,而不是内部元素的值。例如,我已经给出了,我希望输出为

LNAME, FNAME MNAME

2 个答案:

答案 0 :(得分:1)

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

答案 1 :(得分: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;
}