'클린코드를 위한 테스트 주도 개발'을 읽으면서 코드를 써보고 있는데 TDD는 훈련이다라는 문장을 보고나서는 테스트 코드를 보고라도 계속 써야겠다라는 생각이 들었다.
코드를 써내려가다가 처음보는 메소드(?)를 보게되었다.
implicitly_wait() 라는 메소드는 셀레니움 내장 메소드인데 이는 driver 객체가 get(url)로 요청한 페이지 내용들이 모두 로딩이 완료될 때까지 int(초) 만큼 암묵적으로 기다리게 하는 것이다.
테스트를 하면서 '브라우저가 60초동안 켜져있다가 꺼지고 해당 테스트가 끝나겠지?' 라고 생각했으나 결과는 바로 브라우져가 끝나고 막바로 테스트가 실패로 끝나면서 테스트완료.. 순간 '뭐지? 뭐가 잘못된거지?' 라고 생각하며 테스트를 여러차래 다시 돌려보았다.
결과는 똑같았다.
검색을 해보았다.
'mplicitly_wait()라는 메소드는 셀레니움 내장 메소드인데 이는 driver 객체가 get(url)로 요청한 페이지 내용들이 모두 로딩이 완료될 때까지 int(초) 만큼 암묵적으로 기다리게 하는 것이다.'
사실 이걸 보고도 '이게 뭐? 그래서 왜 60초동안 브라우져가 안켜져있고 바로 꺼지는건데?' 라고 생각했는데 검색결과를 좀 더 보다가 '요청한 페이지의 로딩이 완료될 때까지'라는 문장을 아무 생각 없이 읽었다라는 것을 알게 되었다.
결론부터 얘기하자면,
driver.implicitly_wait(10) : 10초안에 웹페이지를 load 하면 바로 넘어가거나, 10초를 기다림.
time.sleep(10) : 10초를 기다림.
time.sleep()과 같은 결과값이 나올거라고 생각하고 있었던 것이다.
이름도 틀리고 에초에 메소드의 출처부터도 다른데 말이다.
공부를 좀 디테일하게 할필요가 있다고 생각한 후로부터 이렇게 생각이 흘러가는 부분들이 많은데 공부하면서 보는 부분들을 교정해야겠다.