셀레니움에서 페이지가 로딩이 될 때까지 기다리는 방법

2024. 1. 28. 10:26·파이썬/크롤링
반응형

셀레니움은 웹 브라우저를 제어하여 자동화된 테스트를 수행하는 데 사용되는 라이브러리입니다. 셀레니움을 사용하여 웹 페이지를 탐색하려면 먼저 해당 페이지가 완전히 로딩되어야 합니다.

셀레니움에서 페이지가 로딩이 될 때까지 기다리는 방법에는 여러 가지가 있습니다.

1. time.sleep() 함수 사용

가장 간단한 방법은 time.sleep() 함수를 사용하는 것입니다. 이 함수는 지정된 시간 동안 코드의 실행을 일시 중지합니다.

from selenium import webdriver

driver = webdriver.Chrome()
driver.get("https://google.com")

# 10초 동안 기다립니다.
time.sleep(10)

# 페이지의 제목을 출력합니다.
print(driver.title)

이 코드는 Google 웹 페이지를 열고 10초 동안 기다립니다. 그런 다음 페이지의 제목을 출력합니다.

 

2. implicitly_wait() 메서드 사용

implicitly_wait() 메서드는 셀레니움이 요소를 찾을 때까지 기다리는 기본 시간을 설정합니다. 이 메서드는 페이지가 완전히 로딩되기 전에 요소를 찾는 경우를 방지하는 데 도움이 됩니다.

from selenium import webdriver

driver = webdriver.Chrome()
driver.implicitly_wait(10)

driver.get("https://google.com")

# 페이지의 제목을 출력합니다.
print(driver.title)

이 코드는 Google 웹 페이지를 열고 implicitly_wait() 메서드를 사용하여 10초의 기본 시간을 설정합니다. 그런 다음 페이지의 제목을 출력합니다.

 

3. WebDriverWait 클래스 사용

WebDriverWait 클래스는 특정 조건이 충족될 때까지 기다리는 데 사용할 수 있습니다. 이 클래스는 다음과 같은 두 가지 메서드를 제공합니다.

  • until() 메서드는 지정된 조건이 충족될 때까지 기다립니다.
  • until_not() 메서드는 지정된 조건이 충족되지 않을 때까지 기다립니다.
from selenium import webdriver

from selenium.webdriver.support.ui import WebDriverWait

driver = webdriver.Chrome()

driver.get("https://google.com")

# 페이지의 제목이 "Google"이 될 때까지 기다립니다.
WebDriverWait(driver, 10).until(lambda x: x.title == "Google")

# 페이지의 제목이 "Google"이 아닐 때까지 기다립니다.
WebDriverWait(driver, 10).until_not(lambda x: x.title == "Google")

이 코드는 Google 웹 페이지를 열고 WebDriverWait 클래스의 until() 메서드를 사용하여 페이지의 제목이 "Google"이 될 때까지 기다립니다.

 

4. 자바스크립트 코드 사용

셀레니움은 자바스크립트를 사용하여 웹 페이지를 탐색하고 조작할 수 있습니다. 페이지가 로딩이 되었는지 확인하려면 다음과 같은 자바스크립트 코드를 사용할 수 있습니다.

script = """return document.readyState === 'complete';"""

# 로딩이 완료될 때까지 기다립니다.
while not driver.execute_script(script):
    pass

이 코드는 페이지의 상태가 "complete"일 때 까지 while문을 반복합니다.

 

셀레니움을 사용하여 페이지가 로딩이 될 때까지 기다리는 방법을 선택할 때에는 다음과 같은 요소를 고려해야 합니다.

  • 페이지의 복잡성
  • 페이지에 포함된 동적 요소의 수
  • 테스트의 성능

페이지가 복잡하고 동적 요소가 많이 포함되어 있다면 implicitly_wait() 메서드나 WebDriverWait 클래스를 사용하여 페이지가 완전히 로딩될 때까지 기다리는 것이 좋습니다. 테스트의 성능을 고려하여 적절한 기다림 시간을 설정해야 합니다.

저작자표시 비영리 변경금지 (새창열림)

'파이썬 > 크롤링' 카테고리의 다른 글

셀레니움 최적화를 위한 chrome_options  (0) 2024.01.30
셀레니움에서 이미지 비활성화 : 최적화  (0) 2024.01.29
셀레니움의 키보드 : selenium.webdriver.common.keys  (1) 2024.01.24
웹 자동화의 핵심 : 셀레니움의 WebElement 란?  (0) 2024.01.23
셀레니움 요소 찾기 : find_element와 find_elements  (0) 2024.01.19
'파이썬/크롤링' 카테고리의 다른 글
  • 셀레니움 최적화를 위한 chrome_options
  • 셀레니움에서 이미지 비활성화 : 최적화
  • 셀레니움의 키보드 : selenium.webdriver.common.keys
  • 웹 자동화의 핵심 : 셀레니움의 WebElement 란?
코샵
코샵
나의 코딩 일기장
    반응형
  • 코샵
    끄적끄적 코딩 공방
    코샵
    • 분류 전체보기 (575) N
      • 상품 추천 (84) N
      • MongoDB (4)
      • 하드웨어 (9)
      • 일기장 (4)
      • Unity (138)
        • Tip (41)
        • Project (1)
        • Design Pattern (8)
        • Firebase (6)
        • Asset (2)
      • 파이썬 (128)
        • Basic (41)
        • OpenCV (8)
        • Pandas (15)
        • PyQT (3)
        • SBC(Single Board Computer) (1)
        • 크롤링 (14)
        • Fast API (29)
        • Package (6)
      • Linux (4)
      • C# (97)
        • Algorithm (11)
        • Window (7)
      • TypeScript (50)
        • CSS (10)
      • Git (11)
      • SQL (5)
      • Flutter (10)
        • Tip (1)
      • System (1)
      • BaekJoon (6)
      • Portfolio (2)
      • MacOS (1)
      • 유틸리티 (1)
      • 서비스 (6)
      • 자동화 (3)
      • Hobby (10)
        • 물생활 (10)
        • 식집사 (0)
  • 인기 글

  • 태그

    ipcamera
    unity
    셀레니움
    programmerlife
    상품 리뷰 크롤링
    rtsp
    스크립트 실행
    devlife
    카페24리뷰
    programming101
    카페24리뷰이관
    리뷰관리
    쇼핑몰리뷰
    codingtips
    리스트
    Python
    긴유통기한우유
    스크립트 실행 순서
    cv2
    파이썬
    learntocode
    리뷰이관
    유니티
    스마트스토어리뷰
    list
    라떼우유
    C#
    믈레코비타멸균우유
    codingcommunity
    appdevelopment
  • 최근 글

  • hELLO· Designed By정상우.v4.10.3
코샵
셀레니움에서 페이지가 로딩이 될 때까지 기다리는 방법
상단으로

티스토리툴바