Python/Selenium
selenium TimeoutException: message 오류 해결하기
PySun
2025. 2. 20. 09:43
반응형
소개
Selenium을 사용할 때 'TimeoutException: message' 오류를 만나는 경우가 많습니다. 이는 특정 작업이 주어진 시간 내에 완료되지 않을 때 발생합니다. 이 블로그 글에서는 이 오류의 원인과 해결 방법에 대해 알아보겠습니다.
에러 발생 예시 코드
먼저, 'TimeoutException: message' 오류가 발생할 수 있는 간단한 예시 코드를 살펴보겠습니다.
from selenium import webdriver
from selenium.webdriver.common.by import By
from selenium.common.exceptions import TimeoutException
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC
# 웹 드라이버 초기화
driver = webdriver.Chrome()
# 특정 URL 방문
driver.get('https://example.com')
try:
# 5초 이내에 특정 요소가 나타날 것으로 기대
element = WebDriverWait(driver, 5).until(
EC.visibility_of_element_located((By.ID, 'some_element_id'))
)
print(element)
except TimeoutException as e:
print("TimeoutException 발생:", str(e))
finally:
driver.quit()
에러 해결 방법
1. 대기 시간 늘리기
가장 간단한 해결 방법은 대기 시간을 늘리는 것입니다. 페이지 로딩이나 특정 요소가 나타날 때까지 기다리는 시간을 적절히 조정하세요.
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, 'some_element_id'))
)
print(element)
driver.quit()
2. 조건 변경하기
시나리오에 따라 다른 조건을 사용해 볼 수 있습니다. 예를 들어, 요소가 클릭 가능할 때까지 기다리도록 설정할 수 있습니다.
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, 10).until(
EC.element_to_be_clickable((By.ID, 'some_element_id'))
)
print("클릭 가능한 요소:", element)
driver.quit()
3. 웹 페이지의 로드 상태 점검
웹 페이지가 예상보다 느리게 로드되거나 요소가 비동기적으로 생성되는 경우가 있을 수 있습니다. 이 경우, 페이지 전체가 로드된 후에 작업을 시도하는 것이 좋습니다.
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')
# 문서가 로드되는지 확인
WebDriverWait(driver, 10).until(
lambda driver: driver.execute_script('return document.readyState') == 'complete'
)
element = driver.find_element(By.ID, 'some_element_id')
print("요소 찾음:", element)
driver.quit()
마무리
이번 블로그 글에서는 Selenium에서 'TimeoutException: message' 오류를 해결하는 몇 가지 방법을 살펴보았습니다. 대기 시간을 조정하거나 조건을 변경하고, 페이지의 로드 상태를 점검함으로써 이러한 오류를 극복할 수 있습니다. Selenium을 활용할 때는 항상 적절한 대기 시간과 조건을 설정하는 것이 중요합니다. 다양한 상황에 맞춰 코드를 조정하며 안정적인 자동화를 실현해 보세요!
반응형