Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/selenium/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 从元素中获取文本--排除内部元素的文本_Java_Selenium_Testing_Selenium Webdriver_Automation - Fatal编程技术网

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

Java 从元素中获取文本--排除内部元素的文本,java,selenium,testing,selenium-webdriver,automation,Java,Selenium,Testing,Selenium Webdriver,Automation,我有一个HTML,如下所示 <div class="someClass"> LNAME, FNAME MNAME <a class="button" onclick="#">This is Button</a> </div> 我使用的是driver.findElement(By.cssSelector(“div.someClass”)).getText() 我知道上面的代码将div.someClass元素作为一个整体提供给我 如

我有一个HTML,如下所示

<div class="someClass">
     LNAME, FNAME MNAME
    <a class="button" onclick="#">This is Button</a>
</div>
我使用的是
driver.findElement(By.cssSelector(“div.someClass”)).getText()

我知道上面的代码将
div.someClass
元素作为一个整体提供给我

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

LNAME, FNAME MNAME
-根据定义-获取此元素的可见(即未被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;
}
公共字符串getTopElementText(按)
{
WebElement topElement=driver.findElement(按);
String originalText=topElement.getText();
//获取innerText和stringlength大于0的所有子元素
List children=topElement.findElements(By.xpath(“*[string length(text())>0]”)
for(WebElement:children)
orginalText=originalText.replace(element.getText(),“”);
返回原始文本;
}
//a[@class='button']/preceding-sibling::text()
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;
}