与Jsoup div div divs

与Jsoup div div divs

问题描述:

我有一个页面,可以找到几个状态。我想要统计页面上的所有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 

你可以找到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