如何在Jsoup中检查元素的可见性?

Tha*_*han 5 java jsoup

我找不到像isDisplayed()Jsoup Element 这样的直接方法。我可以type = "hidden"使用以下代码检查输入。

"HIDDEN".equals(elm.attr("type").toUpperCase())
Run Code Online (Sandbox Code Playgroud)

但我也需要隐藏隐藏的CSS。以及继承的隐藏元素。

luk*_*sch 2

Pshemo 在他的评论中已经说过:JSOUP 不是 JavaScript 解释器。并且 JSOUP 不会将外部 CSS 信息合并到 html 中。JSOUP 只是解释 html,而且它非常擅长这一点。不多但也不少。您还可以使用 JSOUP 访问互联网并加载 html 页面,但这确实是它的限制。

关于您的问题:您应该认真考虑是否确实需要知道元素是可见还是隐藏。如果它在您的上下文中,您可能需要一个行为类似于浏览器的测试框架。对于 Java,有很好的与selenium webdriver 的绑定。这会驱动真正的浏览器加载和测试页面。您还可以使用 selenium 来抓取内容。我有很好的经验,使用 selenium 访问 Web 内容,然后切换到 JSOUP 进行实际抓取。在您的情况下,您可以直接使用强大的 webdriver API 来查明某个元素是否隐藏。

Selenium webdriver 能够与 Firefox、Chrome 和许多其他浏览器配合使用。如果您需要一个轻量级的替代方案,您可以使用无头浏览器。为此,存在PhantomJs,它得到了 selenium 的极好支持。或者HTMLUnit,它更轻,并且使用 JavaScript 的 Java Rhino 解释器。

您看,有很多选项可供选择来实现您想要的目标。只是不是 JSOUP,尽管它是一个很棒的库。