2017-05-26 93 views
0

我有一個頁面,可以找到幾個狀態。我想要統計頁面上的所有serviceStatus-OK和serviceStatus-DOWN div。很遺憾,我無法修改該頁面,我需要驗證所有服務已啓動並正在運行。我的想法是,加載頁面,計數所有OK狀態。如果5個服務有5個確定,我們很好。如果有任何DOWN,我們就不好。與Jsoup div div divs

Any ideas? 

Source code: 

    <span id="content"> 
        <div class="status"> 
         <div class="serviceName"> 
          Some name <br /> 
          http://blablaservice1 
         </div> 
         <div class="serviceStatus-OK"> 
          OK 
         </div> 
        </div> 

        <div class="status"> 
         <div class="serviceName"> 
          Some other name <br /> 
          http://blablaservice2 
         </div> 
         <div class="serviceStatus-DOWN"> 
          DOWN 
         </div> 
        </div> 

My code: 
Elements services = doc.select("span#conent"); 
     Element content = doc.getElementById("content"); 
     Elements servicesOks = content.getElementsByTag("status"); 

     int upCounter = 0; 
     int downCounter = 0; 
     for (Element y : servicesOks) { 
      if (y.hasClass("status-OK")) { 
       upCounter++; 
      } 
     } 

     for (Element y : servicesOks) { 
      if (y.hasAttr("status-DOWN")) { 
       downCounter++; 
      } 
     } 


     System.out.println("OK Systems: " + upCounter); 
     System.out.println("DOWN Systems: " + upCounter); 

My output is: 

OK Systems: 0 
DOWN Systems: 0 

回答

1

你可以找到okays起伏的像這樣的數字:

Document doc = Jsoup.parse(input); 
Elements OK = doc.select(".serviceStatus-OK"); 
Elements down = doc.select(".serviceStatus-DOWN"); 
System.out.println("OK - " + OK.size()); 
System.out.println("DOWN - " + down.size()); 

找到所有與該名serviceStatus-OKserviceStatus-DOWN的元素,再算上各種項目的數量(elemnts是隻是一個list)。

+0

謝謝,它工作正常!欣賞它!我的定位器很糟糕。我有另一個div狀態也是serviceStatus-CHECKING。當我加載頁面時,所有div都有Checking,最後每個服務都有OK或DOWN狀態,並且DOM被刷新。我該如何等待檢查過程的結束?所以每個servicestatus-CHECKING div應該消失。我嘗試了webdriverwait,但它保存了一個檢查所有的時間。提前致謝!! – brobee

+0

聽起來像你的網頁是動態的,所以我認爲'jsoup'不適合這個。嘗試搜索phantomJS。 – TDG

+0

是的,它是動態的,但我需要去與java,jsoup,webdriver。我只是需要等一下,直到dom改變,並按照你所說的計數。 – brobee