본문 바로가기
Python/Selenium

Selenium ScriptTimeoutException 오류 해결하기

by PySun 2025. 1. 22.
반응형

소개

Selenium을 사용하다 보면 'ScriptTimeoutException' 오류에 직면할 수 있습니다. 이 오류는 일반적으로 스크립트가 정해진 시간 내에 실행되지 못할 때 발생하는데요, 웹 페이지의 로딩 지연이나 과도한 대기 시간 등이 그 원인입니다. 이번 블로그 포스트에서는 이 오류의 원인과 해결 방법에 대해 깊이 있게 알아보겠습니다.

에러 발생 예시 코드

먼저, 'ScriptTimeoutException'이 발생할 수 있는 간단한 예시 코드를 살펴봅시다.

from selenium import webdriver
from selenium.common.exceptions import TimeoutException

# 드라이버 설정
driver = webdriver.Chrome()

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

try:
    # 스크립트 실행 대기
    driver.execute_script("window.alert('Hello, World!')", timeout=5)  # 5초 이상 대기하면 오류 발생
except TimeoutException as e:
    print(f"TimeoutException 발생: {e}")

driver.quit()

에러 해결 방법

1. 스크립트 시간 증가

스크립트 실행 대기를 위한 시간을 늘리는 것이 기본적인 해결책입니다. 아래의 코드는 타임아웃 시간을 조정하는 방법을 보여줍니다.

from selenium import webdriver
from selenium.common.exceptions import TimeoutException

# 드라이버 설정
driver = webdriver.Chrome()

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

try:
    # 스크립트 실행 대기 - 타임아웃 시간을 15초로 설정
    driver.execute_script("window.alert('Hello, World!')", timeout=15)  # 15초로 시간을 늘림
except TimeoutException as e:
    print(f"TimeoutException 발생: {e}")

driver.quit()

2. 적절한 로딩 확인 및 대기

웹 페이지가 완전히 로드되었는지 확인해야 합니다. 이때, 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

# 드라이버 설정
driver = webdriver.Chrome()

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

try:
    # 특정 요소가 로드될 때까지 대기
    WebDriverWait(driver, 10).until(EC.presence_of_element_located((By.ID, "element_id")))
    driver.execute_script("window.alert('Hello, World!')")
except TimeoutException as e:
    print(f"TimeoutException 발생: {e}")

driver.quit()

마무리

이 블로그 글에서는 Selenium에서 발생하는 'ScriptTimeoutException' 오류에 대한 간단한 해결 방법을 살펴보았습니다. 타임아웃 시간을 늘리거나 웹 페이지의 요소가 로드되는 시간을 확인하는 방법을 통해 이러한 오류를 극복할 수 있습니다. Selenium을 사용할 때마다 웹 페이지의 로딩 속도와 요소 상태를 고려하여 코드를 작성하는 것이 중요합니다. 잘 활용하면 더 원활한 자동화 작업이 가능하답니다!

반응형