2016-10-27 5 views
1

Html:GetText() уточнение - XPath не возвращает значение

<strong class="text-xl ng-binding" ng-bind="summary.PublishedIssuedRecent">5</strong> 

мой XPath:

@FindBy(how = How.XPATH, using = "//strong[@ng-bind='summary.PublishedIssuedRecent']") 
public WebElement countRecentlyPublishedApplication; 

String pubCount = countRecentlyPublishedApplication.getText(); 

мой Expectation

я хочу, чтобы извлечь значение 5

но я получаю пустое значение в строке pubCount, пожалуйста, предложите ошибку в my xpath

+0

Я предполагаю, что вы используете Selenium, верно? Если да, добавьте соответствующий тег. – Markus

ответ

1

Из атрибута ng-bind Я предполагаю, что вы пытаетесь лом angularJS приложения, и вы используете селен веб Водитель.

Проблема с угловым, она отображается на javascript после загрузки страницы. Итак, начинающий элемент, который вы хотите отловить, может и не быть. Решение может состоять в том, чтобы подождать секунду, пока углы не завершат рендеринг, а затем попытаются найти элемент.

driver.manage().timeouts().implicitlyWait(1, TimeUnit.SECONDS); 
WebElement pubCount = driver.findElement(By.xpath("//strong[@ng-bind='summary.PublishedIssuedRecent']")).getText(); 
+0

Да, правильная xpath, проблема во время рендеринга, спасибо за ваши комментарии – Prabu

1

Выражение XPath само по себе правильно, оно выбирает ваш узел, как ожидалось. Простой тест с xmllint дает:

> xmllint --xpath "//strong[@ng-bind='summary.PublishedIssuedRecent']" ~/test.html 
<strong class="text-xl ng-binding" ng-bind="summary.PublishedIssuedRecent">5</strong> 

Так что ошибка находится за пределами выражения XPath.

Кстати, если вам просто нужен текст узла, вы можете использовать

> xmllint --xpath "//strong[@ng-bind='summary.PublishedIssuedRecent']/text()" ~/test.html 
5 
Смежные вопросы