[TIL] Selenium 시간대기

고은정·2021년 4월 19일
3

TIL

목록 보기
14/31
post-thumbnail

Selenium에 대한 포스팅은 아래를 참고해주세요.
React에 Selenium 시작하기

시간대기

셀레니움을 이용해서 크롤링을 진행하다보면 접근하려는 요소가 존재하지 않을 때 발생하는 NoSuchElementException에러를 종종 발견할 수 있다.
페이지와 서버가 통신중이거나 네트워크 지연 등으로 위의 크롤링을 원하는 요소가 html에 존재하기 전에 요소에 접근을 시도하기 때문에 발생하는 에러로, 시간대기를 이용해서 해결할 수 있다.

시간대기의 종류 및 각 사용법은 아래와 같다.

time.sleep

  • 지정한 시간만큼 지연 (프로세스 자체를 지정한 시간동안 기다림)

사용법

from time import sleep

sleep(3) //3초간 기다림

Implicitly Wait (암묵적 대기)

  • Selenium에서만 사용되는 특수한 메서드
  • 지정한 시간만큼 대기 (브라우저에서 사용되는 엔진 자체에서 파싱되는 시간을 기다림)
  • 모든 요소에 적용
  • sleep보다 낭비되는 시간이 적음

사용법

from selenium import webdriver

driver = webdriver.Chrome('chromedriver.exe')
driver.implicitly_wait(10)

Explicitly Wait (명시적 대기)

  • Selenium에서만 사용되는 특수한 메서드
  • 조건이 True가 될 때 까지 지정한 시간만큼 대기
  • 특정 요소에 적용

사용법

from selenium import webdriver
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC

browser=webdriver.Chrome('chromedriver')
browser.get("https://www.naver.com/")
WebDriverWait(driver, 100).until(EC.presence_of_element_located((By.CSS_SELECTOR, "div.header")))
profile
개발이 하고싶어요

0개의 댓글