조금씩 꾸준히 완성을 향해

[selenium] Implicit Waits(암묵적대기) vs Explicit Waits(명시적대기) 본문

Python/Web Scraping

[selenium] Implicit Waits(암묵적대기) vs Explicit Waits(명시적대기)

all_sound 2022. 9. 14. 23:27

Wait till Load Webpage(로딩 대기)

 

브라우저에서 해당 웹 페이지의 요소들을 로드하는데 걸리는 시간을 대기하는 것을 말한다. 웹 페이지가 로드되기도 전에 element가 존재하지 않는다는 error가 뜨는 걸 방지하기 위함이다. 

 

 

▶ Implicit Waits(암묵적 대기)

driver.implicitly_wait(secs)

브라우저에서 사용되는 엔진 자체에서 파싱을 기다려 주는 selenium 자체의 특수한 메소드이다. 여기서 중요한 부분은 지정값이 최대시간이라는 사실이다. 즉 파싱이 완료되면 코드가 즉시 샐행이 되고, 늦더라도 최대 n초까지는 기다려 준다는 뜻이다. 

 

 

 Explicit Waits(명시적 대기)

time.sleep(secs)

프로세스 자체를 지정한 시간동안 기다려 주는 역할을 하는 메소드이다. 파싱이 완료되는 시간과는 무관하게 지정시간을 무조건 기다려 준다는 특징이 있다. 

 

 

 

두 방식은 실행속도의 차이가 존재한다. 일반적으로 time.sleep()이 훨씬 느리게 작동한다. 무조건적인 대기시간이 발생하기 때문이다. 이를 인지하고, 상황에 따라 적절하게 선택하는 게 좋을 것 같다.