์ผ๋ฐ์ ์ผ๋ก ์ ๋ ๋์์ ์งํํ๋ค ๋ณด๋ฉด NoSuchElementException์๋ฌ๋ฅผ ์ข ์ข ๋ฐ๊ฒฌํ ์ ์๋ค. ๋๋ถ๋ถ ์๊ฐ์ ์ธ ์ด์๋ก ๋ฐ์ํ๋ ์๋ฌ์ด๋ค. (ํต์ ์ค, ๋๋ ์์๋ฅผ ๋ถ๋ฌ์ค๋ ๋์ค ์ฝ๋ ์คํ) ์ด๋ด ๋ ์ฃผ๋ก ์๊ฐ๋๊ธฐ๋ฅผ ์ด์ฉํด์ ํด๊ฒฐํ ์ ์๋ค.
1. Time.sleep
- Python์ sleep ๊ฐ์ ๊ฒฝ์ฐ์๋ ์ธ์๋ก ms ๋จ์๊ฐ ์๋ ์ด(sec) ๋จ์์ ์ซ์๋ฅผ ๋ฐ๊ธฐ ๋๋ฌธ์ ์ฌ์ฉํ๊ธฐ์ ๋งค์ฐ ์ง๊ด์ ์ด๋ค.๊ทธ๋ ๊ธฐ ๋๋ฌธ์ ๊ฐ๋จํ ๋๊ธฐ๋ ์งง์ ์๊ฐ์ ๋๊ธฐ ์ ๋๋ sleep()์ ์ฌ์ฉํด์ ๋๊ธฐ๋ฅผ ํ๋ ๊ฒ๋ ์ข๋ค.
โถ๏ธ ์์
import time
driver.get('http://naver.com') #์ฌ์ดํธ ์ง์
time.sleep(2) #2์ด๋๊ธฐ
time.sleep(0.5) #0.5์ด๋๊ธฐ
2. ์์์ ๋๊ธฐ (Implicit Waits)
- ์์์ ๋๊ธฐ๋ ํ์ด์ง๊ฐ ๋ก๋๋ ๋๊น์ง ๊ธฐ๋ค๋ฆฌ๋ผ๋ ๋ป์ด๋ค. sleep()๊ณผ ์ฐจ์ด์ ์ sleep()์ ์ง์ ๋ ์๊ฐ ๋์ ๋ฌด์กฐ๊ฑด ๊ธฐ๋ค๋ฆฌ๋ผ๋ ๋ป์ด๊ณ , ์์์ ๋๊ธฐ๋ ์ง์ ํ ์๊ฐ์ด ๋๊ธฐ ์ ์ ํ์ด์ง ๋ก๋๊ฐ ๋๋๋ฉด ๋ค์ ์์ ์ ์งํํ๋ผ๋ ๋ป์ด๋ค.
โถ๏ธ ์์
driver.get('http://naver.com') #์ฌ์ดํธ ์ง์
driver.implicitly_wait(10) #์์์ ๋๊ธฐ 10์ด
3. ๋ช ์์ ๋๊ธฐ (Explicit Waits)
- ๋ช ์์ ๋๊ธฐ๋ ํด๋น ์์๊ฐ ๋ถ๋ฌ์์ง ๋๊น์ง ๋๊ธฐ ์ํ๋ฅผ ๊ฑธ์ด "๋ช ์์ ์ผ๋ก ๊ธฐ๋ค๋ฆฌ๋ ๊ฒ"์ด๋ค. ๋ถ๋ฌ์ค์ง ๋ชปํ ์, Timeout ์ผ๋ก ์ค์ ๋ ์๊ฐ๋งํผ ๊ธฐ๋ค๋ฆฐ๋ค.
- Selenium์์๋ง ์ฌ์ฉ๋๋ ํน์ํ ๋ฉ์๋ / ํน์ ์์์ ์ ์ฉ
โถ๏ธ ์์
from selenium import webdriver
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC
driver.get('http://naver.com')
WebDriverWait(driver, 100).until(EC.presence_of_element_located((By.CSS_SELECTOR, "div.header")))
๐ Ref.Site
https://velog.io/@eunjeong/TIL-Selenium-%EC%8B%9C%EA%B0%84%EB%8C%80%EA%B8%B0
https://velog.io/@tkjung/Wait%EC%9D%98-%EC%A2%85%EB%A5%98
'๐ฅ Python' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[Selenium] Elements ์์น(์ขํ) ๊ฐ์ ธ์ค๊ธฐ (0) | 2023.05.09 |
---|---|
[Selenium] Element ํ ์คํธ ์ถ์ถํ๊ธฐ (0) | 2023.04.22 |
[Selenium] ํ์ด์ง ์คํฌ๋กค ํ๊ธฐ (0) | 2023.03.20 |
[Selenium] iframe ์ ํํ๊ธฐ (1) | 2023.01.25 |
[Selenium] ์ฐฝ ์ปจํธ๋กค (0) | 2023.01.13 |