본문 바로가기
Python/Selenium

Selenium.wait_until로 요소 로드 대기하기

by PySun 2025. 1. 13.
반응형

Selenium의 wait_until 함수: 웹 요소 로드를 기다리는 스마트한 방법

웹 자동화의 세계에서 Selenium은 매우 중요한 도구입니다. 스마트하게 동작하기 위해서는 웹 페이지가 완전히 로드될 때까지 기다리는 것이 필요합니다. wait_until 함수는 이러한 필요성을 충족시켜주는 강력한 메소드입니다. 이번 포스팅에서는 wait_until 함수를 사용하여 웹 요소가 로드되기를 기다리는 방법과 풍부한 예제를 소개하겠습니다.

wait_until 함수 소개

wait_until 메소드는 지정된 조건이 충족될 때까지 코드의 실행을 일시 중지시킵니다. 이는 동적으로 바뀌는 웹 페이지에서 특정 요소가 사용자에게 보이기 전까지 코드를 계속 실행하지 않고 안전하게 기다리도록 도와줍니다.

함수 시그니처

WebDriverWait(driver, timeout).until(expected_conditions)

매개변수:

  • driver: 현재 브라우저 세션을 제어하는 WebDriver 객체입니다.
  • timeout: 최대 대기 시간(초)입니다.
  • expected_conditions: 대기할 조건이며, 요소가 존재하거나 클릭 가능하도록 기다릴 수 있습니다.

반환 값:

  • 지정된 조건이 충족된 웹 요소를 반환합니다. 만약 대시간 초과가 발생하면 예외를 발생시킵니다.

사용 예제

기본 예제

여기에서는 wait_until 메소드를 이용하여 특정 요소가 DOM에 로드되는 것을 기다리는 방법을 보여줍니다.

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초 동안 대기
try:
    element = WebDriverWait(driver, 10).until(
        EC.presence_of_element_located((By.ID, 'myElementId'))
    )
    print("요소가 성공적으로 로드되었습니다!")
except TimeoutException:
    print("시간 초과: 요소를 찾을 수 없습니다.")

driver.quit()

다양한 조건 대기 예제

조건에 따라 다르게 대기할 수 있는 방법을 설명합니다. 다음은 버튼이 클릭 가능해질 때까지 대기하는 예제입니다.

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')

# 버튼이 클릭 가능해지기를 최대 15초까지 대기
try:
    button = WebDriverWait(driver, 15).until(
        EC.element_to_be_clickable((By.XPATH, '//button[text()="Click Me"]'))
    )
    button.click()
    print("버튼을 클릭했습니다!")
except TimeoutException:
    print("시간 초과: 버튼 클릭이 불가능합니다.")

driver.quit()

결론

wait_until 메소드는 Selenium을 사용하여 웹 요소의 동적 로드를 처리하는 데 있어 중요한 도구입니다. 올바른 조건을 설정하여 안정적인 테스트 환경을 만들 수 있습니다. 이러한 대기 방식을 통해 웹 자동화가 더욱 효율적이고 안정적으로 변화할 수 있습니다.

  • 웹 자동화에서 차별화를 만들고 싶다면 wait_until을 적극 활용하세요!
  • 나만의 자동화 스크립트를 만들어 Selenium의 매력을 극대화해보세요!
반응형