Я новичок в HtmlUnit, и я не знаю, как получить текст внутри [...]
Часть моего html файла:
<ul ......somethin....>
<li data-role="list-divider" role="heading" style="font-size:16px;" class="ui-bar-f">
INFORMATION_LINE_1
</li>
<li data-theme="d" class="ui-li ui-btn-icon-right ui-btn-up-d ui-odd-match-column ">
<div class="ui-btn-inner ui-li">
<div class="">
<div class="ui-btn-text">
<a href="/x/cxntay/13113/ndzvsssl/g1" class=" ui-link-inherit ui-link-hover">
<h3 class="ui-li-heading">
<span class="xheader">INFORMATION_LINE_2</span>
<span class="label live">INFORMATION_LINE_3</span>
</h3>
<div class="ui-live-scores">
<span class="team1-scores">
<span class="ui-team-name">INFORMATION_LINE_4</span>
<span style="font-weight:bold">INFORMATION_LINE_5</span>
</span>
<span>INFORMATION_LINE_6</span>
</div>
</a>
</div>
</div>
</div>
</li>
</ul>
Теперь я хочу получить "INFORMATION_LINE_X" (1,2... 6) между этими тегами.
Вот что я пробовал:
List<HtmlUnorderedList> ls = (List<HtmlUnorderedList>) page.getByXPath("/ul");
List<DomNode> dls = ls.get(0).getChildNodes();
System.out.println(dls.get(0).getFirstByXPath("//li[@data-role='list-divider']/text()");
Я просто попытался получить INFORMATION_LINE_1 Но он напечатал null
. Мне нужно получить все INFORMATION_LINES.
Лучше использовать только XPath, а не смешивать его с методами HTMLUnit. Что-то вроде этого должно работать, чтобы вы получили первую информационную строку:
HtmlElement e = page.getFirstByXPath("//li[@data-role='list-divider']");
System.out.println(e.asText());
Чтобы получить другие информационные строки, вы должны следовать одному и тому же подходу, но изменить строку XPath.
Помните, что вы всегда должны отлаживать страницу, просматривая код, распечатывая вывод page.asXml()
. Если вы используете настоящий браузер, вы на самом деле не видите точно так же, как видит HTMLUnit. Вы можете споткнуться о различиях, особенно если страница выполняет JavaScript.