Обход URL или страниц, чтобы найти 404 ссылки
У меня есть рабочий код, который пересекает один уровень 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) Также есть способ, которым я могу игнорировать определенные ссылки, которые попадают с определенными тегами или идентификаторами, потому что эти стандартные ссылки повторяются и находятся на каждой странице, и, если возможно, я могу игнорировать эти...
с нетерпением жду некоторых входов!
1 ответ
Если вы имеете в виду, как структурировать саму программу, возможно, самый простой способ - это сохранить список URL-адресов для проверки (to-check-urls) и набор уже проверенных URL-адресов (check-urls).
Когда ваша программа запускается, URL-адреса для проверки содержат только первую страницу для посещения, а проверенные URL-адреса, очевидно, пусты.
Затем у вас есть один цикл, который повторяется до тех пор, пока список проверяемых URL-адресов не станет пустым, и делает это:
- Если список пуст, выход, вы закончили
- Возьмите один URL из списка проверок и удалите его
- Если URL уже присутствует в проверенных URL, вернитесь к 1
- Добавьте URL к зарегистрированному URL
- Откройте URL, как вы уже делаете
- Если это 404, сообщите об ошибке, как вы предпочитаете, и вернитесь к 1
- Разбор HTML, как вы уже делаете
- Поместите все найденные URL в URL для проверки
- Вернуться к 1
Код в основном там, просто нужно расположить его в цикле, используя два списка. Таким образом, вы не проверяете URL-адрес дважды, и вам все равно, являются ли они вторым, третьим или четвертым уровнем, также потому, что сайт представляет собой график, а не дерево, поэтому независимо от того, сколько уровней вы добавите, он все еще может более.