본문으로 바로가기

파일의 IT 블로그

  1. Home
  2. 프로그래밍/C#
  3. [C#] Selenium 프로그램 종료 후 종료되게 하기와 Close,Quit, Dispose 차이 알아보기

[C#] Selenium 프로그램 종료 후 종료되게 하기와 Close,Quit, Dispose 차이 알아보기

· 댓글개 · KRFile

Selenium에서 종료하는 명령어는 총 3가지가 있습니다.

 

driver.Dispose();

driver.Close();

driver.Quit();

 

다 종료하다는 의미를 가지고 있는데 그 차이가 무엇인지 오늘 알아보고,

프로그램 종료 후 Selenium 서비스를 완전히 종료하는 법을 알려드리겠습니다.

 

 

      IWebDriver driver = new InternetExplorerDriver(); //선언
      
         private void Form1_FormClosing(object sender, FormClosingEventArgs e)
        {
            driver.Close();
        }

우선 Selenium 종료를 위해 driver.Close()를 시행해봅니다.

 

Selenium이 컨트롤 하고있는 웹 브라우저는 꺼지지만 다음과 같은 콘솔 창이 남아있게 됩니다.

이것으로 알 수 있는건 driver.Close()는 현재 Selenium이 컨트롤하고 있는 (활성화된) 창을 닫는 기능을 한다는 걸 알 수 있습니다.

 

웹 브라우저가 꺼진 이유는 제가 창을 하나만 열어놔서 그렇습니다. 탭을 여러 만들면 활성화된

창 하나만 딱 종료됩니다.

 

활성화된 창만 닫기 때문에 현재 창을 닫고 새로 창을 만들어서 재활용이 가능합니다.

즉 Selenium 서비스가 메모리에 그대로 상주하고 있습니다. 

만약 Selenium을 완벽히 제거하기 위해선 close()를 사용해선 안됩니다.

 

 

      IWebDriver driver = new InternetExplorerDriver(); //선언
      
         private void Form1_FormClosing(object sender, FormClosingEventArgs e)
        {
            driver.Quit();
        }

그다음은 driver.Quit()입니다.

시행 시 웹 드라이버, 열린 모든 창을 닫습니다. 아까 같은 콘솔 창이 남아있지 않고 같이 종료된 것을 확인 가능합니다.

 

driver.Quit()이 작동하게 되면 driver.Dispose()를 호출합니다.

driver.Dispose()의 역할은 웹 드라이버, 열린 모든 창을 닫습니다.

 

즉 driver.Quit()의 역할, driver.Dispose()의 역할은 동일하다고 볼 수 있습니다.

 

정리

driver.Close()는 현재 Selenium이 작업하는 활성화된 창 하나를 종료함 

(실제로 웹 드라이버는 종료되지 않고 메모리에 그대로 상주하기 때문에 웹 드라이버를 계속 재활용 가능함.)

 

창 하나에서만 작업한 경우 언뜻 보면 Quit()과 동일해 보이나 Selenium 서비스가 완전하게 종료되지 않는다.

즉 이것으로 종료됐다고 생각하고 웹 드라이버를 계속 선언하면 메모리에 계속 쌓이기 때문에

메모리 누수 문제가 발생할 수 있다.

 

driver.Quit() = driver.Dispose()로 브라우저에서 열린 모든 창, 웹 드라이버를 종료함

 

결론

      IWebDriver driver = new InternetExplorerDriver(); //선언
      
         private void Form1_FormClosing(object sender, FormClosingEventArgs e)
        {
            driver.Quit();
        }

프로그램 종료 시에 Selenium을 깔끔하게 지우고 싶다면

위 코드 driver.Quit()을 이용하세요. (대부분 dispose가 아니라 quit을 많이 사용하는듯함.)

 

 

 

SNS 공유하기
💬 댓글 개
이모티콘창 닫기
울음
안녕
감사해요
당황
피폐

이모티콘을 클릭하면 댓글창에 입력됩니다.