我试图仅从父元素获取文本。见下文:
`<h2 class="maps-header-text-h1">
ABC
<span id="currentMapCategory">DEF</span>
</h2>`
当我从 .maps-header-text-h1
执行 getText 时,我获取了表示 ABCDEF 的元素的所有文本,我想要的是仅获取 ABC 而没有如果可以的话使用JS?并理解为什么两个文本在一起,而我只找到第一个元素
这些是URL
该元素是 .maps-header-text-h1
在它下面你可以看到还有其他文本
谢谢
最佳答案
有几种解决方案:
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];
关于java - 寻找获取父亲文本的选项,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58330826/