Обход 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-адресов не станет пустым, и делает это:

  1. Если список пуст, выход, вы закончили
  2. Возьмите один URL из списка проверок и удалите его
  3. Если URL уже присутствует в проверенных URL, вернитесь к 1
  4. Добавьте URL к зарегистрированному URL
  5. Откройте URL, как вы уже делаете
  6. Если это 404, сообщите об ошибке, как вы предпочитаете, и вернитесь к 1
  7. Разбор HTML, как вы уже делаете
  8. Поместите все найденные URL в URL для проверки
  9. Вернуться к 1

Код в основном там, просто нужно расположить его в цикле, используя два списка. Таким образом, вы не проверяете URL-адрес дважды, и вам все равно, являются ли они вторым, третьим или четвертым уровнем, также потому, что сайт представляет собой график, а не дерево, поэтому независимо от того, сколько уровней вы добавите, он все еще может более.

Другие вопросы по тегам