본문 바로가기
Python/Selenium

Selenium WebDriver timed out 오류 해결하기

by PySun 2025. 1. 13.
반응형

소개

Selenium WebDriver를 사용할 때 'Timed out error'는 자주 발생할 수 있는 오류 중 하나입니다. 이 오류는 일반적으로 웹 페이지가 로드되는 것을 일정 시간 동안 기다린 후에도 완료되지 않을 때 발생합니다. 이 블로그 글에서는 이 오류의 원인과 해결 방법을 소개하겠습니다.

에러 발생 예시 코드

먼저, 'Selenium WebDriver Timed out' 오류가 발생할 수 있는 간단한 예시 코드를 살펴봅시다.

from selenium import webdriver
from selenium.webdriver.common.by import By

# Selenium WebDriver 설정
driver = webdriver.Chrome()

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

# 요소를 찾기 위해 대기
element = driver.find_element(By.ID, "non_existent_element")  # 존재하지 않는 요소
print(element.text)

에러 해결 방법

1. 적절한 대기 시간 설정

기본적으로 Selenium은 요소를 찾기 위해 하드코딩된 대기 시간을 사용합니다. 이 시간은 필요에 따라 조정할 수 있습니다. 예를 들어, 'WebDriverWait'을 사용하여 더 긴 대기 시간을 설정할 수 있습니다.

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

# Selenium WebDriver 설정
driver = webdriver.Chrome()

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

# 최대 10초까지 대기
element = WebDriverWait(driver, 10).until(EC.presence_of_element_located((By.ID, "expected_element")))  # 존재하는 요소
print(element.text)

2. 페이지 로드 완료 대기

페이지가 로드될 때까지 기다리는 것도 중요합니다. 아래 코드를 사용하면 자바스크립트가 실행되고 페이지가 완전히 로드될 때까지 대기할 수 있습니다.

from selenium import webdriver

# Selenium WebDriver 설정
driver = webdriver.Chrome()

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

# 페이지 로드 완료 대기
driver.implicitly_wait(10)  # 10초 동안 대기
# 요소 찾기
element = driver.find_element(By.ID, "expected_element")  # 존재하는 요소
print(element.text)

마무리

이 블로그 글에서는 Selenium WebDriver에서 발생할 수 있는 'Timed out error'에 대한 간단한 해결 방법을 설명했습니다. 적절한 대기 시간을 설정하거나 페이지 로드를 명시적으로 기다림으로써 이 문제를 효과적으로 해결할 수 있습니다. 항상 코드에서 사용하는 요소 id가 올바른지 다시 한 번 확인하고, 필요에 따라 대기 시간을 조정하는 것이 중요합니다.

반응형