Python/Selenium

Selenium의 명시적 대기 (Explicit Wait) 사용하기

PySun 2025. 2. 13. 08:11
반응형

Selenium의 명시적 대기 (Explicit Wait) 사용하기

웹 자동화 테스트의 세계에서, Selenium 라이브러리는 모든 개발자와 테스터들에게 사랑받는 필수 도구입니다. 하지만 복잡한 웹 페이지에서는 요소가 로드되는 속도가 제각각이라, 이를 처리하기 위해 Explicit Wait 를 이용하여 더욱 효율적이고 신뢰할 수 있는 테스트를 만들 수 있습니다. 이번 포스팅에서는 명시적 대기가 무엇인지, 그리고 이를 효과적으로 활용하는 방법에 대해 알아보겠습니다.

명시적 대기 (Explicit Wait)란?

Explicit Wait은 Selenium에서 특정 조건이 충족될 때까지 대기하는 방법입니다. 이때 조건이 충족되면 즉시 실행을 재개하며, 지정된 시간이 지나면 예외를 발생시킵니다. 이 방식은 브라우저의 상태나 애플리케이션의 특성에 따라 대기 시간과 조건을 세밀하게 조정할 수 있어 매우 유용합니다.

사용 예제 소개

이제 Explicit Wait을 사용하여 요소가 나타날 때까지 기다리는 간단한 예제를 살펴보겠습니다.

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

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

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

# 명시적 대기 시작 (최대 10초 동안)
try:
    element = WebDriverWait(driver, 10).until(
        EC.presence_of_element_located((By.ID, "myElementId"))
    )
    print("Element is visible!")
except:
    print("Element not found within the wait time.")
finally:
    driver.quit()

조건의 다양성

명시적 대기는 다양한 조건을 사용하여 대기할 수 있습니다. 예를 들어, 아래의 코드를 통해 요소의 클릭 가능 여부를 확인할 수 있습니다.

# 클릭 가능한 요소 대기
try:
    button = WebDriverWait(driver, 10).until(
        EC.element_to_be_clickable((By.XPATH, "//button[@id='submit']"))
    )
    button.click()
    print("Button clicked successfully!")
except:
    print("Button not clickable within the wait time.")

결론

Explicit Wait는 Selenium으로 자동화된 테스트를 작성할 때 중요하고 유용한 도구입니다. 이를 통해 불안정한 웹 환경에서도 안정적인 테스트를 구현할 수 있습니다. 매번 로딩 속도가 다를 수 있는 현대의 웹 애플리케이션에서는 이보다 더 유용한 도구는 없습니다!

  • Explicit Wait을 활용하여 테스트의 정확성과 재현성을 높여보세요!
  • 명시적 대기를 통해 복잡한 웹 페이지에서 문제를 해결하는 새로운 방법을 찾아보세요!
반응형