Java 从元素中获取文本--排除内部元素的文本
我有一个HTML,如下所示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元素作为一个整体提供给我 如
<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;
}