与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-OK
和serviceStatus-DOWN
的元素,再算上各种项目的数量(elemnts
是只是一个list
)。
谢谢,它工作正常!欣赏它!我的定位器很糟糕。我有另一个div状态也是serviceStatus-CHECKING。当我加载页面时,所有div都有Checking,最后每个服务都有OK或DOWN状态,并且DOM被刷新。我该如何等待检查过程的结束?所以每个servicestatus-CHECKING div应该消失。我尝试了webdriverwait,但它保存了一个检查所有的时间。提前致谢!! – brobee
听起来像你的网页是动态的,所以我认为'jsoup'不适合这个。尝试搜索phantomJS。 – TDG
是的,它是动态的,但我需要去与java,jsoup,webdriver。我只是需要等一下,直到dom改变,并按照你所说的计数。 – brobee