Как найти поврежденные ссылки в Selenium WebDriver?
Для поиска поврежденных ссылок (битых ссылок) в Selenium WebDriver, вы можете использовать следующий подход:
Получение всех ссылок на странице:
Используйте метод findElements
для поиска всех элементов a
(ссылок) на веб-странице.
List<WebElement> allLinks = driver.findElements(By.tagName("a"));
Проверка статуса каждой ссылки:
Пройдите по каждой найденной ссылке и получите атрибут href
. Затем используйте HTTP-запросы для проверки статуса каждой ссылки.
for (WebElement link : allLinks) {
String url = link.getAttribute("href");
verifyLinkStatus(url);
}
Метод для проверки статуса ссылки:
Создайте метод, который будет отправлять 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);
}
}
Полный код примера:
Вот полный пример кода для поиска поврежденных ссылок:
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);
}
}
}