Как найти поврежденные ссылки в Selenium WebDriver?

Для поиска поврежденных ссылок (битых ссылок) в Selenium WebDriver, вы можете использовать следующий подход:

  1. Получение всех ссылок на странице:

    • Используйте метод findElements для поиска всех элементов a (ссылок) на веб-странице.

    List<WebElement> allLinks = driver.findElements(By.tagName("a"));
  2. Проверка статуса каждой ссылки:

    • Пройдите по каждой найденной ссылке и получите атрибут href. Затем используйте HTTP-запросы для проверки статуса каждой ссылки.

    for (WebElement link : allLinks) {
        String url = link.getAttribute("href");
        verifyLinkStatus(url);
    }
  3. Метод для проверки статуса ссылки:

    • Создайте метод, который будет отправлять HTTP-запрос к каждой ссылке и проверять ее статус.

    public void verifyLinkStatus(String url) {
        try {
            HttpURLConnection connection = (HttpURLConnection) new URL(url).openConnection();
            connection.connect();
            int responseCode = connection.getResponseCode();
            if (responseCode >= 400) {
                System.out.println("Broken link found: " + url + " - Response code: " + responseCode);
            } else {
                System.out.println("Valid link: " + url);
            }
        } catch (IOException e) {
            System.out.println("Error connecting to the link: " + url);
        }
    }
  4. Полный код примера:

    • Вот полный пример кода для поиска поврежденных ссылок:

    import org.openqa.selenium.By;
    import org.openqa.selenium.WebDriver;
    import org.openqa.selenium.WebElement;
    import org.openqa.selenium.chrome.ChromeDriver;
    
    import java.io.IOException;
    import java.net.HttpURLConnection;
    import java.net.URL;
    import java.util.List;
    
    public class BrokenLinksExample {
    
        public static void main(String[] args) {
            WebDriver driver = new ChromeDriver();
            driver.get("https://www.example.com");
    
            List<WebElement> allLinks = driver.findElements(By.tagName("a"));
    
            for (WebElement link : allLinks) {
                String url = link.getAttribute("href");
                verifyLinkStatus(url);
            }
    
            driver.quit();
        }
    
        public static void verifyLinkStatus(String url) {
            try {
                HttpURLConnection connection = (HttpURLConnection) new URL(url).openConnection();
                connection.connect();
                int responseCode = connection.getResponseCode();
                if (responseCode >= 400) {
                    System.out.println("Broken link found: " + url + " - Response code: " + responseCode);
                } else {
                    System.out.println("Valid link: " + url);
                }
            } catch (IOException e) {
                System.out.println("Error connecting to the link: " + url);
            }
        }
    }

Last updated