개발 공부 & 정리
Selenium 종료시키는 법 (quit 와 close) 본문
selenium 닫는 기능으로는 두가지 명령어 close()와 quit() 이 존재합니다.
하지만 두 명령어 사이에는 차이가 있습니다. 하나의 webdriver를 이용한 작업을 하면 괜찮지만, 여러개의 webdriver을 이용해서 작업을 한다면,특히 클라우드 환경에서 no sandbox 옵션으로 실행 할 경우, 종료했다고 생각한 webdriver이 종료되지 않아 생각지도 못한 메모리 누수를 야기할 수 있습니다.
동일한 페이지로 quit() 과 close()를 사용하여 종료하였을 때의 차이점을 비교해 보겠습니다.
우선 3개의 탭을 띄운 webdriver를 켜고 각각의 방법으로 종료했을 때, webdriver의 화면과 process의 차이점을 비교해보겠습니다.
close()는 현재 selenium webdriver가 활성화되어 있는 화면만을 종료합니다.
여러 개의 webdriver 탭이 열려있다면, 현재 띄우고 있는 webdriver 화면만 종료되고, 나머지 webdriver는 종료되지 않습니다.
때문에 close()로 종료하면 위와같이 첫 탭이 종료되고 2,3 번째 탭은 그대로 남아있습니다.
프로세스에서 웹드라이버를 검색해보면 위와 같이 프로세스가 여전히 남아 있음을 알 수 있습니다.
하지만,
quit()는 dispose() 함수를 불러와 열려있는 모든 webdriver를 종료하고 세션을 안전하게 종료합니다.
프로그램을 종료할 때 quit()을 사용하지 않는다면 webdriver 세션이 완벽하게 종료되지 않아 메모리 누수가 발생할 수 있습니다.
아래와 같이 프로세스도 종료되는 것을 알수 있습니다.
하나의 webdriver일 경우는 활성화된 화면이 종료되기 때문에 같은 기능을 하지만,
여러 개의 webdriver를 켜고 사용 할 경우,
webdriver 의 사용이 모두 끝나 해당 프로그램을 완전히 종료하려면 quit() 명령어를 사용해야 합니다.
참고 :
https://www.zyxware.com/articles/5552/what-is-close-and-quit-commands-in-selenium-webdriver
http://daeunginfo.blogspot.com/2019/06/python-selenium-close-quit.html
'개발 > 이것 저것' 카테고리의 다른 글
[Git] Git stash 정리 (0) | 2020.09.29 |
---|---|
Google cloud 에서 Jenkins를 통한 Spring build (with Github) (0) | 2020.03.08 |
개발하며 느낀점 (TDD?) (0) | 2020.01.29 |
Browserify 나 Webpack 을 사용해 bundle 하는 이유 (0) | 2019.12.17 |