Computer >> 컴퓨터 >  >> 프로그래밍 >> Python

Selenium Python WebDriver 기본 타임아웃 설정 방법 총정리

Selenium WebDriver에서는 기본 타임아웃(default timeout)을 설정하여 페이지 로딩이나 요소 탐색에 소요되는 최대 대기 시간을 제어할 수 있습니다. 이를 통해 불필요하게 오래 기다리는 상황을 방지하고 테스트 스크립트의 안정성을 높일 수 있습니다.

1. set_page_load_timeout()으로 페이지 로딩 타임아웃 설정

set_page_load_timeout 메서드는 페이지 로딩에 대한 타임아웃을 지정하는 데 사용됩니다. 대기 시간을 초 단위로 파라미터로 전달하면 됩니다.

문법

driver.set_page_load_timeout(5)

지정한 대기 시간이 지난 후에도 페이지가 완전히 로드되지 않으면 TimeoutException 예외가 발생합니다.

2. implicit wait(암시적 대기)로 기본 타임아웃 정의

동기화(synchronization) 처리 시 암시적 대기(implicit wait) 개념을 활용해 기본 타임아웃을 정의할 수도 있습니다. 암시적 대기는 전역(global) 대기 시간으로, 페이지 내 모든 요소에 일괄 적용됩니다.

implicitly_wait 메서드를 사용하며, 역시 대기 시간을 초 단위로 파라미터로 전달합니다.

문법

driver.implicitly_wait(5)

암시적 대기 시간이 경과한 후에도 해당 요소를 찾지 못하면 TimeoutException 예외가 발생합니다.

예제 코드

set_page_load_timeout() 사용 예

from selenium import webdriver
driver = webdriver.Chrome(executable_path="C:\\chromedriver.exe")
# set_page_load_timeout으로 기본 페이지 로딩 시간 설정
driver.set_page_load_timeout(0.8)
driver.get("https://www.tutorialspoint.com/index.htm")

implicit wait 사용 예

from selenium import webdriver
driver = webdriver.Chrome(executable_path="C:\\chromedriver.exe")
# 0.8초의 암시적 대기 적용
driver.implicitly_wait(0.8)
driver.get("https://www.tutorialspoint.com/index.htm")

두 방식의 차이점

set_page_load_timeout()은 페이지 자체의 로딩 완료 여부에 대한 대기 시간을 제어하는 반면, implicitly_wait()는 DOM 내 특정 요소를 찾을 때까지의 최대 대기 시간을 전역적으로 설정합니다. 두 메서드는 목적이 다르므로 상황에 맞게 선택하거나 함께 활용하면 더욱 안정적인 자동화 테스트를 구현할 수 있습니다.