728x90
Implicitly Waits(์๋ฌต์ ๋๊ธฐ) VS Explictly Waits(๋ช ์์ ๋๊ธฐ) ์ ์ฐจ์ด
๋จผ์ ๋๊ธฐ(wait)์ ๊ธฐ๋ณธ์ ์ธ ๋ช ๋ น์ด๋
time.sleep(1)
์ด๋ ๋ฌผ๋ฆฌ์ ์ธ ์๊ฐ์ ๊ธฐ๋ค๋ฆฌ๋ ๋ช ๋ น์ด๋ค.
import time
time.sleep(1) //1์ด ๋๊ธฐ
time.sleep(0.1) //0.1์ด ๋๊ธฐ
Implicitly_wait(์๋ฌต์ ๋๊ธฐ) | explicitly_wait(๋ช ์์ ๋๊ธฐ) |
: ํ์ด์ง ์ด๋ ๋ฑ์ ๋ช ๋ น์ด๋ฅผ ์ ๋ ฅํ์๋, ๋ค์ ์น ํ์ด์ง๊ฐ ๋์ด์ฌ๋๊น์ง ๊ธฐ๋ค๋ผ๋ ๋ป(์นํ์ด์ง ์ ์ฒด๊ฐ ๋์ด์ฌ๋๊น์ง ๊ธฐ๋ค๋ฆฌ๊ธฐ) | : ํ๊บผ๋ฒ์ ๋ชจ๋ ํ์ด์ง์ ์์๋ค์ด ๋ค ๋ก๋ฉ๋๋ ๊ฒฝ์ฐ๋ ์์ง๋ง, ๋๋ถ๋ถ ์ ์ฒด ํ์ด์ง์ ์ผ๋ถ๋ถ์ด ๋จผ์ ๋ก๋ฉ๋์ด ๋ฆ๊ฒ ๋ก๋ฉ๋๋ ๋ถ๋ถ์ด ์กด์ฌํ๋ค.(=>๋์ DOM)(์นํ์ด์ง์ ์ผ๋ถ๋ถ์ด ๋ํ๋ ๋๊น์ง ๊ธฐ๋ค๋ฆฌ๊ธฐ) Implicitly_wait์ ๊ฒฝ์ฐ: ์์ง์ ๋ชฉ์ ์ผ๋ก ํ๋ ์ด๋ฏธ์ง์ ๋ก๋ฉ์ด ๋์ง ์๋ ์ํ์์๋ค์ ๋ช ๋ น์ด๋ก ๋์ด๊ฐ ์์ง์ ํ ์ ์๋ค. |
<->time.sleep(10)์ ๋ก๋ฉ์ด ๋ค ๋์์ด๋ ์ค์ ํ ์๊ฐ(10์ด)๋งํผ ๋ฌด์กฐ๊ฑด ๋๊ธฐ๋ฅผ ํ๋ค.
from selenium import webdriver
driver=webdriver.Chrome('chromedriver.exe')
driver.implicitly_wait(5) // 5์ด ๋์ ์น ํ์ด์ง ๋ก๋ฉ์ ๊ธฐ๋ค๋ฆฌ๊ณ , 5์ด ์ดํ์ ๋ค์ ๋ช
๋ น์ด๋ฅผ ์คํ
// 5์ด ์ด์ ์ ๋ก๋ฉ์ด ์๋ฃ๋๋ฉด 5์ด๋ฅผ ์ฑ์ฐ์ง ์์๋ ๋ค์ ๋ช
๋ น์ด๋ฅผ ์คํํ๋ค.
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
// explicitly_wait ์ฌ์ฉ์ ์์ ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ฅผ ๋จผ์ ์ ์ธํด์ค์ผํ๋ค.
driver = webdriver.Chrome('chromedriver.exe')
driver.get("https://www.29cm.co.kr/shop/category/list?category_large_code=268100100&category_medium_code=new")
element = WebDriverWait(driver, 10).until(EC.presence_of_element_located((By.ID, "idname")))
//explicitly_wait ์ค๋ช
//WebDriverWait(driver, ์๊ฐ) - Implicitly_wait๊ณผ ๋ง์ฐฌ๊ฐ์ง๋ก '์๊ฐ'์ ์ ๋ก๋ฉ๋๋ค๋ฉด ๋ค์ ์ฝ๋๋ก ๋์ด๊ฐ๋ค.
//EC.presence_of_element_located(): ๊ดํธ์์ ์์๊ฐ ๋ํ๋ ๋๊น์ง ๊ธฐ๋ค๋ ค๋ผ.
//(By.ID, ‘์์ด๋์ด๋ฆ’)
//(By.CLASS_NAME, ‘ํด๋์ค๋ช
’)
//(By.XPATH, ‘xpath๊ฒฝ๋ก’)
//(By.NAME, ‘๋ค์๋ช
’)
//(By.CSS_SELECTOR, ‘CSS์
๋ ํฐ’)
//(By.PARTIAL_LINK_TEXT, ‘๋งํฌํ
์คํธ์ผ๋ถ๋ถ’)
//(By.LINK_TEXT, ‘๋งํฌํ
์คํธ(์ ๋ถ์ผ์น)’)
์ฐธ๊ณ
728x90