본문 바로가기
Python/Selenium

Selenium WebDriverTimeoutException 오류 해결하기

by PySun 2025. 2. 13.
반응형

소개

Selenium에서는 브라우저와 상호작용할 때 여러 가지 오류가 발생할 수 있습니다. 그 중에서도 'WebDriverTimeoutException'은 주로 예상한 시간 안에 특정 요소가 로드되지 않을 때 발생하는 오류입니다. 이 글에서는 이 오류의 원인과 해결 방법에 대해 알아보겠습니다.

에러 발생 예시 코드

먼저, 'WebDriverTimeoutException'이 발생할 수 있는 간단한 예시 코드를 살펴보겠습니다.

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

# 웹드라이버 실행
driver = webdriver.Chrome()

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

# 특정 요소가 로드되기를 기다리기
element = WebDriverWait(driver, 5).until(
    EC.presence_of_element_located((By.ID, "non_existent_element"))
)
print(element)

에러 해결 방법

1. 타임아웃 시간을 늘리기

기본적으로 설정된 타임아웃 시간이 너무 짧으면 에러가 발생할 수 있습니다. 필요에 따라 시간을 늘려 보세요.

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

2. 요소의 존재 여부 확인

대기하는 요소가 실제로 페이지에 존재하는지 확인하세요. 잘못된 ID나 XPATH로 인해 요소가 로드되지 않을 수 있습니다.

try:
    element = WebDriverWait(driver, 5).until(
        EC.presence_of_element_located((By.ID, "correct_element_id"))
    )
    print(element)
except WebDriverTimeoutException:
    print("요소를 찾지 못했습니다.")

3. 페이지의 로드 상태 확인

페이지가 완전히 로드되지 않았을 때도 이 에러가 발생할 수 있습니다. 페이지가 완전히 로드된 후 요소를 찾도록 코드를 조정해야 합니다.

driver.implicitly_wait(10)  # 암시적 대기 설정

# 특정 요소에 접근
element = driver.find_element(By.ID, "correct_element_id")
print(element)

마무리

이번 블로그 글에서는 Selenium에서 발생할 수 있는 'WebDriverTimeoutException'의 원인과 해결 방법에 대해 살펴보았습니다. 타임아웃 시간을 조정하거나, 요소의 존재 확인, 페이지 로드 상태 점검 등을 통해 이 오류를 해결할 수 있습니다. Selenium을 사용할 땐 항상 디버깅 과정을 거치며, 오류의 원인을 찾아보세요. 성공적인 웹 자동화 작업이 되시길 바랍니다!

반응형