본문 바로가기
Python/Selenium

Selenium WebDriverWaitException 오류 해결하기

by PySun 2025. 3. 6.
반응형

소개

Selenium을 사용하여 웹 브라우저를 자동화하는 과정에서 종종 'WebDriverWaitException' 오류가 발생할 수 있습니다. 이 오류는 주로 특정 요소를 기다리고자 할 때 해당 요소가 예상한 시간 내에 나타나지 않을 때 발생합니다. 이 글에서는 'WebDriverWaitException'의 원인과 해결책을 살펴보겠습니다.

에러 발생 예시 코드

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

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("http://example.com")

try:
    # 특정 요소를 최대 10초간 기다립니다.
    element = WebDriverWait(driver, 10).until(
        EC.presence_of_element_located((By.ID, "nonexistent-id"))
    )
    print("찾은 요소:", element)
except Exception as e:
    print("오류 발생:", str(e))
finally:
    driver.quit()

에러 해결 방법

1. 대기 조건 확인

WebDriverWait을 사용할 때, `expected_conditions`의 올바른 대기 조건을 사용하는 것이 중요합니다. 예를 들어, 존재하지 않는 ID에 대해 기다리고 있다면 적절한 조건으로 수정해야 합니다.

try:
    # 존재하는 ID로 수정
    element = WebDriverWait(driver, 10).until(
        EC.presence_of_element_located((By.ID, "existing-id"))
    )
    print("찾은 요소:", element)
except Exception as e:
    print("오류 발생:", str(e))

2. 페이지 로딩 시간 조정

요소가 동적으로 생성되는 경우 페이지의 로딩 속도가 느려질 수 있습니다. 이 경우 최대 대기 시간을 늘려보세요.

try:
    # 최대 대기 시간을 20초로 증가
    element = WebDriverWait(driver, 20).until(
        EC.presence_of_element_located((By.ID, "existing-id"))
    )
    print("찾은 요소:", element)
except Exception as e:
    print("오류 발생:", str(e))

3. JavaScript로 요소 존재 확인하기

간혹, AJAX 요청이나 다른 스크립트로 인해 요소가 로드되지 않는 경우가 있습니다. 이 때는 JavaScript를 사용하여 직접적으로 요소의 존재를 확인할 수 있습니다.

import time

# JavaScript를 통해 요소 존재 확인
time.sleep(5)  # 페이지 로드 대기
element = driver.execute_script("return document.getElementById('existing-id');")

if element:
    print("찾은 요소:", element)
else:
    print("요소를 찾을 수 없습니다.")

마무리

이번 글에서는 Selenium에서 'WebDriverWaitException' 오류를 해결하기 위한 다양한 방법을 알아보았습니다. 대기 조건을 적절히 설정하고, 페이지의 로딩 시간을 고려하며, 필요시 JavaScript를 활용하는 등의 방법으로 오류를 극복할 수 있습니다. 자동화 작업에서 이런 오류를 피하기 위해서는 페이지의 동작 방식을 잘 이해하고, 이에 맞게 코드를 작성하는 것이 중요합니다.

반응형