2014-08-27 72 views
4

我無法在Jsoup Element中找到像isDisplayed()這樣的任何直接方法。 我可以使用以下代碼檢查輸入與type = "hidden"如何檢查Jsoup中元素的可見性?

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

但我需要隱藏CSS以捕獲以及。還有繼承的隱藏元素。

+3

Jsoup是(X)HTML解析器,而不是瀏覽器模擬器,所以它實際上不支持CSS或JavaScript。也許而不是解析器,你應該使用像硒這樣的網絡驅動程序。 – Pshemo 2014-08-27 12:10:28

回答

0

Pshemo表示已經在他的評論中說:JSOUP不是JavaScript解釋器。而JSOUP不會將外部CSS信息組合到html中。 JSOUP只是解釋html,並且非常擅長這一點。沒有什麼更多,但也沒有多少。您也可以訪問互聯網並使用JSOUP加載html頁面,但這確實是它的限制。

關於您的問題:如果確實需要知道元素是否可見或隱藏,您應該認真思考。如果它在你的上下文中,你很可能需要一個像瀏覽器一樣的測試框架。對於Java,有很好的綁定到selenium webdriver。這驅動一個真正的瀏覽器加載和測試頁面。您也可以用硒刮取內容。我有很好的經驗,使用硒,訪問網頁內容,然後切換到JSOUP實際上刮。在你的情況下,你可以直接使用強大的webdriver API來找出一個元素是否隱藏。

Selenium webdriver能夠與Firefox,Chrome和其他一些瀏覽器一起工作。如果你需要一個輕量級的替代品,你可以使用無頭瀏覽器。爲此,存在由硒極力支持的PhantomJs。或HTMLUnit,它甚至更輕,並且使用JavaScript的Java Rhino解釋器。

你看,有很多選擇來實現你想要的。只是不是JSOUP,雖然它是一個偉大的圖書館。