我在Jsoup Element中找不到像isDisplayed()
这样的直接方法。
我可以使用以下代码使用type = "hidden"
检查输入。
"HIDDEN".equals(elm.attr("type").toUpperCase())
但是我需要隐藏的CSS才能被捕获。还有继承的隐藏元素。
答案 0 :(得分:0)
Pshemo说他已经在评论中说:JSOUP不是JavaScript解释器。并且JSOUP没有将外部CSS信息组合到html中。 JSOUP只是解释html,它非常擅长。没有更多,但也没有更多。您也可以访问互联网并使用JSOUP加载html页面,但这确实是它的限制。
关于你的问题:如果真的需要知道一个元素是可见的还是隐藏的,你应该认真思考。如果它在您的上下文中,您可能需要一个行为类似于浏览器的测试框架。对于Java,selenium webdriver有很好的绑定。这驱动真实的浏览器加载和测试页面。你也可以用硒刮掉内容物。我有很好的经验,使用selenium访问Web内容,然后切换到JSOUP实际抓取。在您的情况下,您可以直接使用功能强大的webdriver API来查明元素是否隐藏。
Selenium webdriver能够与Firefox,Chrome和其他一些浏览器配合使用。如果您需要轻量级替代品,您可以使用无头浏览器。因为存在PhantomJs,它很好地受到硒的支持。或HTMLUnit,它更轻,并使用Java Rhino解释器进行JavaScript。
你知道,有很多选择可供选择,以达到你想要的效果。不是JSOUP,虽然它是一个很棒的图书馆。