본문 바로가기
Python/Selenium

Selenium TimeoutError 오류 해결하기

by PySun 2025. 1. 13.
반응형

소개

Selenium 사용 중 'TimeoutError'가 발생할 때가 있습니다. 이 오류는 특정 요소를 찾거나 페이지가 로드되는 데 예상보다 더 오랜 시간이 걸릴 때 발생합니다. 이 블로그 글에서는 'TimeoutError'의 원인과 여러 해결 방법에 대해 알아보겠습니다.

에러 발생 예시 코드

아래는 'TimeoutError'를 유발할 수 있는 간단한 예시 코드입니다. 요소를 찾기 위해 일정 시간 동안 기다려야 하는데, 그 시간 안에 요소를 찾지 못하면 오류가 발생합니다.

from selenium import webdriver
from selenium.webdriver.common.by import By
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC

# Chrome 웹드라이버 설정
driver = webdriver.Chrome()

# 웹사이트 열기
driver.get("http://example.com")

# 요소를 찾기 위한 대기 (해당 요소가 페이지에 나타나지 않는다고 가정)
element = WebDriverWait(driver, 2).until(
    EC.presence_of_element_located((By.ID, "non_existent_id"))
)
print(element)

에러 해결 방법

1. 대기 시간 늘리기

가장 간단한 해결책은 'WebDriverWait'의 대기 시간을 늘리는 것입니다. 상황에 따라 페이지가 로드되는 시간이 길어질 수 있으므로, 대기 시간을 늘리면 문제를 해결할 수 있습니다.

element = WebDriverWait(driver, 10).until(
    EC.presence_of_element_located((By.ID, "non_existent_id"))
)

2. 요소의 가시성 확인

대기 시간에 관계없이 특정 요소가 가시적인지 확인하는 것이 중요합니다. 만약 요소가 비가시적이라면, 'visibility_of_element_located'를 사용하는 것이 좋습니다.

element = WebDriverWait(driver, 10).until(
    EC.visibility_of_element_located((By.ID, "non_existent_id"))
)

3. 요소가 실제로 존재하는지 확인

해당 ID를 가진 요소가 정말로 페이지 내에 존재하는지를 먼저 확인해 보세요. HTML 구조가 변경되었거나, 잘못된 ID를 사용한 경우 오류가 발생할 수 있습니다.

elements = driver.find_elements(By.ID, "non_existent_id")
if not elements:
    print("해당 ID를 가진 요소가 없습니다.")
else:
    element = elements[0]
    print(element)

마무리

이번 블로그 글에서는 Selenium을 사용하면서 발생할 수 있는 'TimeoutError'에 대해 살펴보았습니다. 대기 시간을 늘리거나, 요소의 가시성을 확인하고, 실제로 요소가 존재하는지를 검토하는 방법으로 오류를 해결할 수 있습니다. 항상 코드 작성 시 예측할 수 없는 상황을 염두에 두고 유연하게 대처하는 것이 중요합니다. 여러분의 Selenium 작업에서 더 많은 성공을 기원합니다!

반응형