2014-08-27 3 views
4

Я не могу найти прямой метод, например isDisplayed() в Jsoup Element. Я могу проверить ввод с помощью type = "hidden", используя следующий код.Как проверить видимость элемента в Jsoup?

"HIDDEN".equals(elm.attr("type").toUpperCase()) 

Но мне нужно, чтобы CSS был скрыт и для захвата. А также унаследованные скрытые элементы.

+3

Jsoup является (X) парсером HTML, а не симулятором браузера, поэтому фактически не поддерживает CSS или JavaScript. Возможно, вместо парсера вы должны использовать веб-драйвер, такой как селен. – Pshemo

ответ

0

Pshemo сказал это уже в своем комментарии: JSOUP не является интерпретатором JavaScript. И JSOUP не объединяет внешнюю информацию CSS в html. JSOUP просто интерпретирует html, и это очень хорошо. Ничего особенного, кроме того, ничего. Вы также можете получить доступ к Интернету и загружать html-страницы с помощью JSOUP, но это действительно предел.

О вашей проблеме: Вам следует много думать, если действительно необходимо знать, является ли элемент видимым или скрытым. Если это в вашем контексте, вам, вероятно, нужна структура тестирования, которая ведет себя как браузер. Для Java есть очень хорошие привязки к selenium webdriver. Это позволяет загружать и тестировать страницы в реальном браузере. Вы также можете очистить содержимое с помощью селена. У меня есть хороший опыт использования обоих, селен для доступа к веб-контенту, а затем переход на JSOUP для фактического очищения. В вашем случае вы можете использовать мощный API-интерфейс webdriver, чтобы узнать, скрыт ли элемент или нет.

Selenium webdriver способен работать с Firefox, Chrome и множеством других браузеров. Если вам нужна легкая альтернатива, вы можете использовать безгласный браузер. Для этого существует PhantomJs, который отлично поддерживается селеном. Или HTMLUnit, который еще легче и использует интерпретатор Java Rhino для JavaScript.

Понимаете, есть достаточно вариантов на выбор, чтобы достичь того, чего вы хотите. Просто не JSOUP, хотя это отличная библиотека.

Смежные вопросы