Java 遍历URL或页面以查找404链接
我有一个工作代码,它遍历一个级别的URL,我需要一些帮助来实现两个或三个级别的链接遍历来检测404Java 遍历URL或页面以查找404链接,java,selenium-webdriver,http-status-code-404,linkchecker,Java,Selenium Webdriver,Http Status Code 404,Linkchecker,我有一个工作代码,它遍历一个级别的URL,我需要一些帮助来实现两个或三个级别的链接遍历来检测404 driver().navigate().to(URL); driver().manage().window().maximize(); String orgWindow = driver().getWindowHandle(); List<WebElement> linksList = driver().findElements(By.tagName(
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
driver().navigate().to(URL);
驱动程序().manage().window().maximize();
字符串orgWindow=driver().getWindowHandle();
List linksList=driver().findElements(按.tagName(“a”));
对于(WebElement linkElement:linksList){
System.out.println(“==========================================================================================================”);
String link=linkElement.getAttribute(“href”);
if(link!=null&&link.contains(“测试”)){
verifyLinkActive(link);//此方法具有要检测404的HTTP URL连接
//第二级遍历。。。。。
驱动程序()。导航()。到(链接);
驱动程序().manage().window().maximize();
List SecondLinkList=driver().findElements(按.tagName(“a”));
for(WebElement链接SecondElement:SecondLinkList){
System.out.println(“==========================================================================================================”);
字符串Secondlink=linkSecondElement.getAttribute(“href”);
if(Secondlink!=null&&Secondlink.contains(“测试”)){
验证链接活动(第二链接);
}//第二
}//第二
}//如果
driver().switchTo().window(orgWindow);//切换回原始窗口
}//为了
我的问题-
1) 对于第二级或第三级迭代来说,找到404是正确的方法吗。
2) 还有一种方法,我可以忽略特定标签或ID的某些链接,因为这些标准链接是重复的,可以在每个页面上找到,如果可能的话,我可以忽略这些
期待一些投入 如果您指的是如何构造程序本身,那么最简单的方法可能是保留一个要检查的URL列表(检查URL)和一组已检查的URL(检查URL) 当程序启动时,要检查的URL仅包含要访问的第一个页面,并且检查的URL显然是空的 然后有一个循环重复,直到要检查的URL列表为空,并执行以下操作:
代码大部分都在那里,只需要使用两个列表将其安排在一个循环中。这样,你就不必检查url两次,也不必关心它们是第二级、第三级还是第四级,这也是因为网站是一个图形而不是一棵树,所以无论你添加多少级,都可能有更多的级别。我如何忽略特定标记之间的链接,例如:忽略标记内的所有链接?而不是按.tagName(“a”)进行操作请尝试使用.xpath(“body//a”)或.cssSelector(“body a”)