Selenium - sleep & wait

헨도·2022년 12월 9일
0

Selenium

목록 보기
2/4
post-thumbnail

Python

셀레니움을 공부하던 도중 time 모듈을 사용하여 원하는 창을 원하는 초만큼 유지하기 위해 사용되는 명령어와
크롬 모듈안에 있는 시간만큼 대기하는 명령어의 차이가 궁금하여 공부하게 되었다.

time.sleep(초)

time.sleep 을 사용하기 위해선 import time을 해주어야 사용할 수 있다.

import time

time.sleep(10) # 10초 대기

위의 명령어처럼 대기하기 원하는 초만큼 작성해주면 된다.

time.sleep()은 설정한 초만큼 무조건 기다린 후에 다음 동작이 작동된다.

implicitly_wait(초) - 암시적 대기

크롬의 Webdriver를 사용하면, 명령어를 사용할 수 있다.
time과 마찬가지로 모듈을 사용하기 위해선 import 해주어야 하지만, time 모듈과는 다른 import가 차이점이다.

  • 암시적 대기란, 페이지가 로드될 때까지 기다리라는 뜻이다.
from selenium import webdriver

chrome =  webdriver.Chrome("./chromedriver.exe") # 현재 파일과 같은 위치의 chromedriver를 사용한다.
chrome.get("http://naver.com")

chrome.implicily_wait(10) # 10초 대기

time과 마찬가지로 대기하기 원하는 초만큼 작성해주면 된다.
그리고 사용하기 위해선 chromedriver가 필요하다.

implicitly_wait()는 설정한 초안에 페이지가 렌더링이 된다면 다음 동작을 한다.

Explicit_wait(초) - 명시적 대기

암시적 대기를 설정해도 문제가 생길 수 있는 부분이 있는데, 동적 페이지 같은 경우가 그렇다.

  • 명시적 대기란, 해당 요소가 불러와질 때까지 대기 상태를 걸어 "명시적으로 기다리는 것"이다.
    불러오지 못할 시, timeout으로 설정된 시간만큼 기다린다.
from selenium import webdriver
from selenium.webdriver.support.ui import WebDriverWait

wait = WebDriverWait(driver, 10)
wait.until(조건)

먼저 WebDriverWait 객체를 생성하고, 인자로 driver와 timeout이 들어간다.
조건을 설정하는 방법은 wait.until(조건)처럼 인자에 기다릴 조건을 넣는다.

time.sleep(초) vs implicitly_wait(초) vs Explicit_wait

간단하게 차이점을 정리한다.

import

  • time.sleep(초) :
import time
  • implicitly_wait(초) :
from selenium import webdriver

webdriver.Chrome("./chromedriver.exe").implicitly_wait()
  • Explicit_wait
from selenium import webdriver
from selenium.webdriver.support.ui import WebDriverWait

동작 원리

  • time.sleep(초) : 설정한 시간만큼 "무조건" 기다린 후에 다음 동작이 작동
  • implicitly_wait(초) : 설정한 시간안에 요청한 "페이지가 로드"되면 다음 동작이 작동
  • Explicit_wait : 해당 요소가 불러올 때까지 대기 상태를 걸어 "명시적으로 기다리는 것"
profile
Junior Backend Developer

0개의 댓글