ищу вариант, чтобы получить текст отца - PullRequest
0 голосов
/ 10 октября 2019

Я пытаюсь получить текст только от элемента отца. См. Ниже:

`<h2 class="maps-header-text-h1">
ABC 
<span id="currentMapCategory">DEF</span>
</h2>`

когда я делаю getText из .maps-header-text-h1 Я получаю весь текст элемента, который означает ABCDEF, я хочу получить только ABC без использования JS, еслиВозможно? и понять, почему два текста вместе, в то время как я нахожу только первый элемент

Это URL элемент .maps-header-text-h1 и под ним вы можете видеть, что есть и другой текст

Спасибо

Ответы [ 2 ]

2 голосов
/ 11 октября 2019

Существует несколько решений:

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];
0 голосов
/ 10 октября 2019

Попробуйте использовать element.getAttribute("value") для того, чтобы найти, что вы нашли, используя css.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...