파이썬, 셀레니움에서 time.sleep과 implicitly_wait의 차이점이 무엇인가요?
time.sleep과 implicitly_wait 둘 다 페이지 로딩 후 사용되는데
여러 소스를 살펴보니
implicitly_wait은 주로 webdriver 첫 로딩시에 쓰이고
time.sleep은 페이지 이동 후에 쓰이는 것 같은데 어떤 차이점이 있나요?
인프런에 굉장히 간단하게 잘 설명된 답변이 있어서 URL 첨부드립니다.
https://www.inflearn.com/questions/5597
요약해서 첨부드리자면
sleep은 프로세스 자체를 지정한 시간동안 기다려 주는 역할을 합니다.(무조건 지연)
implicity_wait은 뜻 그대로 브라우저에서 사용되는 엔진 자체에서 파싱되는 시간을 기다려 주는
메소드라고 할 수 있습니다.
즉, 셀레늄에서만 사용하는 특수한 메소드라고 생각하시면 될 것같습니다.
이렇게 얘기드리면 조금 헷갈리실수있는데 작동하는것 자체도 차이가있습니다.
time.sleep (10)은 코드 실행을 정확히 10 초간 멈 춥니 다.
>> 중간에 해당 sleep을 중지시키는 명시적인 명령을 내리지않으면 10초간 계속 대기합니다.
또한 그 10초가 sleep function 의 루틴이 들어가고 나서라서 정확하게 10.000000초는 아닐수있습니다.
driver.implicitly_wait (10)은 요소가 존재할 때까지 최대 10 초 동안 대기합니다.
2 초 후에 발견되면 코드 실행은 8 초 이상 기다리지 않고 계속됩니다.
>> sleep 보다 낭비되는시간이 적고, 셀레니움 자체 코드이기때문에 좀 더 최적화 되어있기도 합니다.
관련해서 동일 질문이 스택오버플로우에도 있어서 첨부드립니다^^