본문 바로가기
Python/Selenium

selenium WebDriverWaitTimeoutException 해결하기

by PySun 2025. 3. 14.
반응형

소개

Selenium을 사용하다 보면 'WebDriverWaitTimeoutException' 에러를 종종 경험할 수 있습니다. 이 오류는 특정 조건이 주어진 시간 내에 충족되지 않아 발생합니다. 예를 들어, 특정 요소가 DOM에 추가되거나 가시성을 가지지 않는 경우입니다. 오늘은 이 에러를 해결하는 방법에 대해 알아보겠습니다.

에러 발생 예시 코드

먼저, 'WebDriverWaitTimeoutException' 이 발생할 수 있는 간단한 예시 코드를 살펴보겠습니다. 이 코드에서는 웹 페이지가 로드되기 전에 특정 요소를 찾으려고 하여 오류가 발생할 수 있습니다.

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")

# 요소를 찾기 위한 대기 설정 (10초)
element = WebDriverWait(driver, 10).until(
    EC.visibility_of_element_located((By.ID, "nonexistent-element"))
)
print(element)

에러 해결 방법

1. 대기 시간 증가

대기 시간을 늘리는 것은 가장 간단한 방법입니다. 때로는 특정 요소가 로드되는 데 시간이 더 걸릴 수 있으므로, 대기 시간을 늘려볼 수 있습니다.

element = WebDriverWait(driver, 20).until(
    EC.visibility_of_element_located((By.ID, "nonexistent-element"))
)

2. 조건 확인

찾고자 하는 요소가 웹 페이지에 실제로 존재하는지를 확인하세요. 잘못된 ID나 DOM 구조로 인해 요소를 찾지 못할 수 있습니다. 요소가 페이지에 있는지 검사해 보세요.

elements = driver.find_elements(By.ID, "correct-element-id")
if elements:
    element = WebDriverWait(driver, 10).until(
        EC.visibility_of_element_located((By.ID, "correct-element-id"))
    )
    print(element)
else:
    print("요소가 페이지에 없습니다.")

3. 다른 대기 방법 사용

WebDriverWait을 사용할 수 있지만, 다른 유형의 대기 조건도 고려해 보아야 합니다. 예를 들어, 'element_to_be_clickable' 같은 조건을 사용하여 더욱 적합한 대기를 설정할 수 있습니다.

element = WebDriverWait(driver, 10).until(
    EC.element_to_be_clickable((By.ID, "correct-element-id"))
)
print(element)

마무리

이번 블로그 글에서는 Selenium에서 발생하는 'WebDriverWaitTimeoutException' 에러에 대해 다뤄보았습니다. 대기 시간을 조정하거나 올바른 요소가 있는지를 확인하고, 다양한 대기 조건을 사용하면 이 문제를 효과적으로 해결할 수 있습니다. Selenium을 사용할 때는 항상 디버깅을 통해 시간과 자원을 절약하는 것이 중요하니, 필요에 따라 코드를 조정해 보세요!

반응형