본문 바로가기
프로그래밍 언어/C#

[C#] 셀레니움에서 Timeout 또는 OutOfMemory가 발생하는 문제

by 연구자 공학코드 2020. 12. 28.

공지사항

  1. 제가 운영하는 네이버 카페 개발자 커뮤니티 코어큐브(https://cafe.naver.com/ewsncube)에 가입하시면 컴퓨터 관련 학습 자료와 질의응답을 제공받으실 수 있습니다.

728x90
반응형

C#에서 셀레니움을 활용하여 크롬 웹브라우저를 제어하고 있으면 몇시간 후에 크롬 웹브라우저로부터 응답이 없다고 Timeout 오류가 발생하거나 OutOfMemory에러가 발생하여 제어불능에 빠지는 상황이 발생한다.

OpenQA.Selenium.WebDriverException: The HTTP request to the remote WebDriver server for URL http://localhost:65320/session/2c1547c846178882ccf6af559244ec4e/url timed out after 60 seconds.
 ---> System.Net.WebException: The operation has timed out.
   at System.Net.HttpWebRequest.GetResponse()
   at OpenQA.Selenium.Remote.HttpCommandExecutor.MakeHttpRequest(HttpRequestInfo requestInfo)
   --- End of inner exception stack trace ---
   at OpenQA.Selenium.Remote.HttpCommandExecuto
   r.MakeHttpRequest(HttpRequestInfo requestInfo)
   at OpenQA.Selenium.Remote.HttpCommandExecutor.Execute(Command commandToExecute)
   at OpenQA.Selenium.Remote.DriverServiceCommandExecutor.Execute(Command commandToExecute)
   at OpenQA.Selenium.Remote.RemoteWebDriver.Execute(String driverCommandToExecute, Dictionary`2 parameters)
   at OpenQA.Selenium.Remote.RemoteWebDriver.set_Url(String value)
   at Program.parseC() in Program.cs:line 101
   at Program.parseRC() in Program.cs:line 102

오류가 발생하면 위의 문구가 나타나는데 셀레니움을 이용한 자동화 프로그램의 경우 무중단 동작이 가장 중요한 완성 요건이기에 이 문제를 잘 해결할 필요가 있다.

과도한 메모리 사용

오류가 발생하기 직전에는 위와 같이 탭을 1개만 쓰는데도 크롬 웹브라우저의 메모리가 과도하게 사용되고 있는 것이 나타났다. 이런 문제를 일반적으로 해결하는 방법은 웹브라우저를 변경하거나 웹브라우저 버전을 변경, 웹브라우저의 옵션을 변경, 예외처리, 메모리가 가득 차기 전에 웹브라우저를 quit()을 이용하여 닫고 새로 생성하는 것이 있다고 한다. 현재 필자의 크롬 웹브라우저 버전은 87.0.4280.88(64비트)이며 윈도우 10 프로 20H2를 사용하고 있다. 해결 방법을 찾게 되면 본 글에서 다시 서술하도록 하겠다.

 

 

 

728x90
반응형

댓글