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

Java 如何检查Jsoup中元素的可见性?,java,jsoup,Java,Jsoup,我在Jsoup元素中找不到像isDisplayed()这样的直接方法。 我可以使用下面的代码用type=“hidden”检查输入 "HIDDEN".equals(elm.attr("type").toUpperCase()) 但是我也需要捕获隐藏的CSS。以及继承的隐藏元素 Pshemo在评论中已经说过:JSOUP不是JavaScript解释器。JSOUP不会将外部CSS信息合并到html中。JSOUP只是解释html,它在这方面做得非常好。没有更多,也没有更少。您还可以访问internet并

我在Jsoup元素中找不到像
isDisplayed()
这样的直接方法。 我可以使用下面的代码用
type=“hidden”
检查输入

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

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

Pshemo在评论中已经说过:JSOUP不是JavaScript解释器。JSOUP不会将外部CSS信息合并到html中。JSOUP只是解释html,它在这方面做得非常好。没有更多,也没有更少。您还可以访问internet并使用JSOUP加载html页面,但这确实是它的限制

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

SeleniumWebDriver可以与Firefox、Chrome和其他浏览器配合使用。如果你需要一个轻量级的替代品,你可以使用无头浏览器。对于这一点,selenium非常支持这一点。或者,它更轻,并且使用JavaRhino解释器进行JavaScript

你看,要实现你的目标,有很多选择。只是不是JSOUP,尽管它是一个很棒的库。

JSOUP是(X)HTML解析器,而不是浏览器模拟器,所以它实际上不支持CSS或JavaScript。也许您应该使用像selenium这样的web驱动程序来代替解析器。