Как найти поврежденные ссылки в 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?