본문 바로가기
Python/Selenium

selenium.webdriver.WebDriverWait로 동적 대기 처리하기

by PySun 2025. 1. 17.
반응형

selenium.webdriver.WebDriverWait: 동적 대기 처리로 웹 테스트의 정확성 높이기

웹 자동화 테스트에서의 안정성은 결과의 정확성과 직결됩니다. 파이썬의 Selenium 라이브러리에서 제공하는 WebDriverWait 클래스는 동적 대기 처리의 핵심으로, 특정 요소가 나타날 때까지 코드 실행을 잠시 멈추게 하여 안정적으로 테스트를 수행할 수 있게 도와줍니다. 이번 포스팅에서는 WebDriverWait의 사용법과 예제를 소개하겠습니다.

WebDriverWait 소개

WebDriverWait는 주어진 조건이 충족될 때까지 지정된 시간(혹은 최대 시간) 동안 대기합니다. 이 기능은 동적으로 로드되는 요소들이 있을 때, 즉 페이지가 완전히 로드되기 전에 요소에 접근하려 할 때 유용합니다.

클래스 시그니처

from selenium.webdriver.support.ui import WebDriverWait

매개변수:

  • driver: 활성화된 WebDriver 객체입니다.
  • timeout: 대기 시간을 초 단위로 정의합니다.
  • poll_frequency (선택적): 대기 상태에서 요소를 확인하는 간격입니다.

반환 값:

  • 조건이 충족되면 해당 요소를 반환합니다.
  • 지정된 시간 내에 조건이 충족되지 않으면 TimeoutException을 발생시킵니다.

사용 예제

기본 예제

다음은 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

# WebDriver 초기화
driver = webdriver.Chrome()

# 웹 페이지 로드
driver.get('https://example.com')

try:
    # 특정 요소가 페이지에 로드될 때까지 최대 10초 대기
    element = WebDriverWait(driver, 10).until(
        EC.presence_of_element_located((By.ID, 'element_id'))
    )
    print("Element is present on the page.")
except Exception as e:
    print("An error occurred:", e)
finally:
    driver.quit()

여러 조건 예제

동적 웹 페이지에서는 여러 조건을 설정하여 다양한 요소를 확인할 수 있습니다. 이 예제는 클릭 가능한 요소까지 대기합니다.

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

# WebDriver 초기화
driver = webdriver.Chrome()

# 웹 페이지 로드
driver.get('https://example.com')

try:
    # 클릭 가능한 요소가 로드될 때까지 대기
    clickable_element = WebDriverWait(driver, 10).until(
        EC.element_to_be_clickable((By.ID, 'button_id'))
    )
    clickable_element.click()  # 클릭
    print("Button was clicked.")
except Exception as e:
    print("An error occurred:", e)
finally:
    driver.quit()

결론

WebDriverWait 클래스는 로딩이 완료된 후 테스트를 안정적으로 수행할 수 있도록 해줍니다. 이를 통해 웹 페이지의 동적 요소를 제대로 처리하며 성능도 향상시킬 수 있습니다. 웹 자동화의 정확성을 높이는 데 도움이 될 것입니다!

  • 지금 바로 WebDriverWait 클래스를 활용하여 동적 웹 요소 처리의 효율성을 경험해 보세요!
  • 자동화 테스트의 성능과 신뢰성을 한층 높여보세요!
반응형