Selenium 크롬 꺼짐 현상의 원인과 해결책

Selenium으로 크롬 브라우저를 이용할 때 Python 코드 종료 후에도 Selenium 크롬 꺼짐을 방지하는 방법을 살펴보겠습니다.

Selenium 크롬 꺼짐 현상의 원인

아래의 코드에서는 셀레니움의 크롬 드라이버를 이용해 크롬 브라우저를 실행해서 osg.kr 웹 페이지를 여는 작업을 하게 됩니다. 하지만 크롬 브라우저는 열리자마자 종료됩니다. 왜일까요?

기본적으로 Python 코드가 종료되면 해당 프로세스를 마쳤으므로 당연히 Selenium으로 실행한 크롬 브라우저 또한 종료됩니다. 그런데 때로는 문제 상황에 머물러서 해당 문제의 해결책을 알아내야 할 때가 있습니다.

from selenium import webdriver

driver = webdriver.Chrome()
driver.get("https://osg.kr")
Python

셀레니움 크롬 꺼짐 방지하는 방법

Selenium에서 add_experimental_option() 메서드를 이용해서 detach에 대한 값을 True로 해 주면 됩니다. 셀레니움 드라이버가 종료 명령어를 브라우저로 전달할 때, 즉, 파이썬 코드가 종료될 때, 브라우저와의 연결을 분리할 것인지 여부를 정해주는 것입니다. detach를 True로 해 준다면, 드라이버와 브라우저가 분리되므로 크롬 브라우저가 종료되지 않습니다.

from selenium import webdriver
from selenium.webdriver.chrome.options import Options

options = Options()
options.add_experimental_option("detach", True)

driver = webdriver.Chrome(options)
driver.get("https://osg.kr")
Python

add_experimental_options를 이용한 Selenium 크롬 꺼짐 방지 옵션을 추가해 주면, 파이썬 코드 종료 후에도 아래와 같이 브라우저가 남아 있는 걸 확인할 수 있습니다. 친절하게 “Chrome is being controlled by automated test software.”라고 알려주니, Selenium을 이용한 크롬 브라우저와 일반 크롬 브라우저 이용의 혼란을 줄일 수 있겠네요.

그림 1. Selenium 크롬 꺼짐을 해결하고 브라우저가 남아있는 상황
그림 1. Selenium 크롬 꺼짐을 해결하고 브라우저가 남아있는 상황

단, add_experimental_options는 메서드 이름과 마찬가지로 실험적으로 사용하는 옵션이라고 이해할 수 있습니다. 언젠가 해당 옵션이 사라질 수도 있는 점 염두에 두시면 되겠습니다.

관련 자료

셀레니움의 크롬 옵션 상수에서 관련 상수에 대한 설명을 그림 2와 같이 확인할 수 있었습니다.

그림 2. Selenium 크롬 꺼짐 방지하는 옵션
그림 2. Selenium 크롬 꺼짐 방지하는 옵션

같이 읽으면 좋은 글

Leave a Comment