본문 바로가기
Python/Selenium

Selenium TimeoutException 오류 해결하기

by PySun 2025. 1. 8.
반응형

소개

Selenium을 사용하다 보면 'TimeoutException' 오류를 만나는 경우가 종종 있습니다. 이 오류는 주로 Selenium이 특정 요소를 찾는 데 시간이 초과되었을 때 발생합니다. 사용자로서는 당황스러운 상황이고, 이 오류의 원과 해결 방법을 찾는 데 시간을 소모하기도 합니다. 오늘은 'TimeoutException' 오류의 원인과 그에 대한 해결책을 알아보겠습니다.

에러 발생 예시 코드

먼저, 'TimeoutException' 오류가 발생할 가능성이 있는 간단한 예시 코드를 살펴보겠습니다.

from selenium import webdriver
from selenium.common.exceptions import TimeoutException
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()

try:
    # 웹사이트 열기
    driver.get('https://example.com')
    
    # 특정 요소가 나타날 때까지 대기
    element = WebDriverWait(driver, 5).until(
        EC.presence_of_element_located((By.ID, 'non_existing_id'))
    )
except TimeoutException:
    print("TimeoutException: 요소가 나타나지 않았습니다.")
finally:
    driver.quit()

에러 해결 방법

1. 대기 시간을 늘리기

TimeoutException 오류가 발생하는 이유 중 하나는 주어진 대기 시간이 짧기 때문입니다. 따라서, 대기 시간을 늘려줘야 합니다.

element = WebDriverWait(driver, 10).until(
    EC.presence_of_element_located((By.ID, 'non_existing_id'))
)

2. 웹 요소가 나타날 때까지 직접 대기

요소가 나타날 때까지 기다리는 대신 로딩의 끝을 직접 확인하는 방법을 사용해 보세요. 빈 공간이거나 불필요한 요소가 없는지 점검할 수 있습니다.

import time
time.sleep(5)  # 임의의 시간 지연
element = driver.find_element(By.ID, 'non_existing_id')

3. 페이지가 완전히 로드되었는지 확인

특정 요소가 로드되지 않는 이유는 페이지 자체가 완전히 로드되지 않았기 때문일 수 있습니다. 페이지 로드 상태를 확인해보세요.

WebDriverWait(driver, 10).until(
    EC.visibility_of_element_located((By.TAG_NAME, 'body'))
)
element = driver.find_element(By.ID, 'non_existing_id')

마무리

이번 블로그 글에서는 Selenium에서 자주 마주치는 'TimeoutException' 오류에 대해 알아보았습니다. 대기 시간을 조정하거나 페이지 로드 상태를 확인하는 등의 접근 방법을 통해 이 오류를 해결할 수 있습니다. Selenium을 이용한 자동화 작업에서 안정적인 결과를 얻으려면 이러한 세부 사항을 잘 챙기는 것이 중요합니다. 잘못된 요소를 찾는 것에 대한 스트레스를 줄이기 위해, 오류 메시지를 잘 분석하고 상황에 맞는 코드 수정을 해보세요!

반응형