Check Broken Link Status Project

“Broken weblinks” – битые ссылки, важный показатель для каждого сайта. Переходы приводящие пользователей в никуда, нервируют отсутствие контента. Также не лучшим образом сказывается на ранжировании сайта в поисковой выдаче, Yandex и Google не любят также 404, и понижают выдачу. Таким образом, важным этапом тестирования будет, проверка сайта на битые ссылки. Не проверять же вручную, пишем автотест.

Задание:
Найти на сайте все Web ссылки. Проверить отсутствие / наличие битых ссылок в этом списке. С помощью библиотеки log4j осуществить логирование в файл.

Использовал:

Jsoup log4j Junit5

Один из тестов, ссылки парсим из файла. Собираем коллекцию из inputElements и тут же ее проверяем на дубли в коллекцию List collect.

        Document doc = Jsoup.parse(new File("D:\\JAVA\\Java_SRC\\CheckLinkStatus\\src\\main\\resources\\alfa.html"), "utf-8");
        Elements inputElements = doc.select("a[href]");
 
        //Remove duplicates from a List using Java 8 Lambdas
        List<Element> collect = inputElements.stream().distinct().collect(Collectors.toList());

Далее циклом пробегаемся по ссылкам, и вызываем GET запрос, ожидаю 200 ответ, ну или какой придет.

URL url = new URL("https://www.alfastrah.ru"+href);
HttpURLConnection connection = (HttpURLConnection)url.openConnection();
connection.setRequestMethod("GET");
connection.connect();

Вызов логирования + конфиги log4j.xml с настройкой записи лога в файл.

public static final Logger LOG = LogManager.getLogger(ParsingCheckLinkStatus.class);
LOG.info(href);
LOG.info("-----------------------------------");
<File name="MyFile" fileName="all.log" immediateFlush="true" append="false">
   <PatternLayout pattern="%d{yyy-MM-dd HH:mm:ss.SSS} [%t] %-5level %logger{36} - %msg%n"/>
</File>

При вызове Jsoup.connect(url) иногда приходится настраивать user agent для обхода примитивных защит на сайте. Нам было необходимо проверить ответы GET запроса по списку линков, игнорируя ошибки, решение: .ignoreHttpErrors(true)

 
Ссылка на GitHub:
Github ParsingCheckLinkStatusProject

Related Posts