Java 正在寻找获取父文本的选项

Java 正在寻找获取父文本的选项,java,selenium-webdriver,Java,Selenium Webdriver,我试图只从父元素获取文本。见下文: `<h2 class="maps-header-text-h1"> ABC <span id="currentMapCategory">DEF</span> </h2>` ` 基础知识 DEF ` 当我从.maps-header-text-h1中获取所有表示ABCDEF的元素的文本时,如果可能的话,我希望只获取ABC而不使用JS?为了理解为什么两个文本放在一起,而我只找到第一个元素 这就是 元素是.maps

我试图只从父元素获取文本。见下文:

`<h2 class="maps-header-text-h1">
ABC 
<span id="currentMapCategory">DEF</span>
</h2>`
`
基础知识
DEF
`
当我从
.maps-header-text-h1
中获取所有表示ABCDEF的元素的文本时,如果可能的话,我希望只获取ABC而不使用JS?为了理解为什么两个文本放在一起,而我只找到第一个元素

这就是 元素是
.maps-header-text-h1
,在它下面你也可以看到其他文本


谢谢您

尝试使用
元素。getAttribute(“value”)
为您找到使用
css

的WebElement有几种解决方案:

JavascriptExecutor js = (JavascriptExecutor) driver;
WebElement element = driver.findElement(By.cssSelector(".maps-header-text-h1 #currentMapCategory"));
String headerText = (String) js.executeScript("return arguments[0].previousSibling.textContent", element).trim();
第二:

String headerText = driver.findElement(By.cssSelector(".maps-header-text-h1")).getText();
String mapCategoryText = driver.findElement(By.cssSelector("#currentMapCategory")).getText();

String headerText = headerText.replace(mapCategoryText, "").trim();
第三:

JavascriptExecutor js = (JavascriptExecutor) driver;
WebElement element = driver.findElement(By.cssSelector(".maps-header-text-h1"));
String headerText = (String) js.executeScript("return arguments[0].firstChild.textContent", element).trim();
来自@KunduK的更多信息:

// split("\\s") means split by whitespace, that can be space, tab, newline.. 
String headerText = driver.findElement(By.cssSelector(".maps-header-text-h1"))
    .getText().trim()
    .split("\\s")[0];

这是一个有趣的例子,我总是希望定位
h2
元素只会返回
h2
中的文本,而不包括其
span
子元素中的任何文本。@Christine我也是,但看起来它们是以某种方式连接的,我在Debugger上看到了这些,但没有成功。你能分享网站的url吗?你到底在寻找什么?我应该检查屏幕上的哪个元素?我正在搜索选项卡下面的元素。很好,您得到了答案,我无法理解语言。第二个选项是,如果您将
标题文本
拆分为空格,然后打印索引0<代码>字符串[]行=headerText.split(“”);System.out.println(第[0]行)谢谢。这些线的解释是什么
String headerText=(String)js.executeScript(“返回参数[0].previousSibling.textContent”,element.trim()
它们之间的速度有什么不同?@KunduK yes也是一个选项。@nuzo都非常快,您不会感觉到差异argument[0]表示executeScript函数的参数。参数的值是逗号后的元素。代码执行纯javascript