Получить только внутренний текст от webelemnt - PullRequest
0 голосов
/ 03 мая 2018

Я хочу получить только innerText от webelement. Я хочу получить только «Имя» из тега привязки. У меня есть доступ к элементу webdriver, связанному с тегом в примере ниже (anchorElement). Я пытался anchorElement.getText () и anchorElement.getAttribute ("innerText"). Оба возвращают мне «Имя, сортируй Z на A». Что мне здесь делать?

<a id="am-accessible-userName" href="javascript:void(0);" class="selected">
Name 
<span class="util accessible-text">, sort Z to A</span> 
<span class="jpui iconwrap sortIcon" id="undefined" tabindex="-1"> 
<span class="util accessible-text" id="accessible-"></span> 
<i class="jpui angleup util print-hide icon" id="icon-undefined" aria-hidden="true"></i>
</span>
</a>

Ответы [ 2 ]

0 голосов
/ 04 мая 2018

Согласно HTML желаемый элемент - это Текстовый узел , а также Первый дочерний узел тега <a>. Таким образом, чтобы извлечь текст Имя , вы можете использовать следующий блок кода:

  • Искусство связывания Java :

    WebElement myElement = driver.findElement(By.xpath("//a[@class='selected' and @id='am-accessible-userName']"));
    String myText = (String)((JavascriptExecutor)driver).executeScript("return arguments[0].firstChild.textContent;", myElement);
    System.out.println(myText);
    
0 голосов
/ 04 мая 2018

Немного Javascript может выделить только дочерний текстовый узел:

RemoteWebDriver driver = ...
WebElement anchorElement = driver.findElement(By.id("am-accessible-userName"));
String rawText = (String) driver.executeScript(
    "return arguments[0].childNodes[0].nodeValue;", 
    anchorElement);

Так что anchorElement передается в Javascript как arguments[0] там.

Ясно childNodes[0] предполагает, где находится текстовый узел. Если это небезопасно, вы можете повторить и дочерние узлы, возможно, проверяя childNode.nodeName === "#text"

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