Как найти поврежденные ссылки в Selenium WebDriver?
🔹 Алгоритм поиска битых ссылок
Получить все элементы
<a>(ссылки) на странице:links = driver.find_elements("tag name", "a")Для каждой ссылки достать атрибут
href.Проверить, что ссылка не пуста и начинается с http/https.
Отправить HTTP-запрос к этому URL (обычно методом
HEADилиGET).Проверить HTTP статус код ответа:
200 OK→ ссылка рабочая404,500,403и др. → ссылка повреждённая
from selenium import webdriver
import requests
driver = webdriver.Chrome()
driver.get("https://example.com")
# Находим все ссылки <a>
links = driver.find_elements("tag name", "a")
for link in links:
url = link.get_attribute("href")
if not url: # пустая или None
print("❌ Пустая ссылка")
continue
try:
# HEAD быстрее, чем GET (не загружает тело ответа)
response = requests.head(url, allow_redirects=True, timeout=5)
if response.status_code >= 400:
print(f"❌ Битая ссылка: {url} | Код: {response.status_code}")
else:
print(f"✅ Рабочая ссылка: {url} | Код: {response.status_code}")
except requests.exceptions.RequestException as e:
print(f"⚠ Ошибка при проверке {url}: {e}")
driver.quit()
📌 Советы:
Используй
requests.head()→ быстрее, чемget().Добавляй
timeout(иначе тест может зависнуть).Лучше собирать и
<a>и<img>, потому что битая картинка → тоже ошибка.
PreviousТипы навигационных команд SeleniumNextКакую технику следует рассмотреть, используя весь сценарий, если «нет ни frame id, ни frame name»?
Last updated
Was this helpful?