我有一个工作代码遍历一个级别的URL,我需要一些帮助来实现两到三级链接遍历来检测404。
driver().navigate().to(URL);
driver().manage().window().maximize();
String orgWindow = driver().getWindowHandle();
List<WebElement> linksList = driver().findElements(By.tagName("a"));
for (WebElement linkElement : linksList) {
System.out.println("================ At First Level =================");
String link = linkElement.getAttribute("href");
if (link != null && link.contains("test")) {
verifyLinkActive(link); //This method has HTTP URL connection to detect for 404's
// Second Level Traversing.....
driver().navigate().to(link);
driver().manage().window().maximize();
List<WebElement> SecondLinkList = driver().findElements(By.tagName("a"));
for (WebElement linkSecondElement : SecondLinkList) {
System.out.println("================ At Second Level =================");
String Secondlink = linkSecondElement.getAttribute("href");
if (Secondlink != null && Secondlink.contains("test")) {
verifyLinkActive(Secondlink);
}// SecondIF
}//Second for
}//if
driver().switchTo().window(orgWindow); //Switching back to Original window
} //for
我的问题 - 1)我是否已经为第二或第三级迭代实现了正确的方法来查找404。 2)还有一种方法可以忽略某些属于特定标签或ID的链接,因为这些标准链接是重复的并且可以在每个页面上找到,如果可能的话我可以忽略这些...
期待一些投入!!
答案 0 :(得分:0)
如果您的意思是如何构建程序本身,也许最简单的方法是保留要检查的URL列表(to-check-urls),以及一组已经检查过的URL(checked-urls)。
当你的程序启动时,to-check-urls只包含要访问的第一页,而checked-urls显然是空的。
然后你有一个循环重复,直到要检查的URL列表为空,并执行此操作:
代码主要在那里,只需要使用两个列表在循环中进行排列。这样,您不会检查两次网址,也不关心它们是第二级,第三级还是第四级,也因为网站是图形而不是树,所以无论您添加多少级别,仍然可以更多。