Python 오류 해결: Selenium ChromeDriver 오류 완벽 해결 가이드
저도 처음에 Selenium 코드를 다 짜놓고 실행했더니 SessionNotCreatedException 오류만 뜨는 바람에 한참을 헤맸습니다. 알고 보니 크롬 브라우저가 자동으로 업데이트되면서 기존에 다운로드해 둔 ChromeDriver 버전과 맞지 않아 생긴 문제였습니다. 매번 내 크롬 버전을 확인하고 공식 사이트에서 드라이버를 새로 받아 경로를 수정해야 했는데, 이 버전을 맞추는 과정에서만 2시간을 허비하며 심한 스트레스를 받았습니다.
Python Selenium으로 브라우저 자동화를 시작할 때 가장 먼저 마주치는 장벽이 바로 ChromeDriver 오류입니다. vscode에서 코드를 실행하는 순간 빨간 오류 메시지가 쏟아지고, 검색해봐도 해결책이 제각각이라 더 혼란스러운 경험을 많이들 하십니다. 이 글에서는 Selenium ChromeDriver 오류의 유형별 원인과 해결법을 상황별로 정리해 드리겠습니다.
ChromeDriver란 무엇인가 — 통역사가 없으면 대화가 안 됩니다
Selenium과 ChromeDriver의 관계
Selenium은 Python 코드로 웹 브라우저를 제어하는 자동화 도구입니다. 그런데 Python이 크롬 브라우저에 직접 명령을 내릴 수는 없습니다. 중간에 반드시 통역사가 필요합니다. 그 역할을 하는 것이 바로 ChromeDriver입니다.
비유하자면 이렇습니다. Python 코드는 한국어를 쓰는 개발자이고, 크롬 브라우저는 영어만 이해하는 외국인입니다. ChromeDriver는 이 둘 사이에서 실시간으로 통역해 주는 전문 통역사입니다. 통역사가 없거나, 통역사의 버전이 맞지 않으면 대화 자체가 불가능합니다.
ChromeDriver 오류가 자주 발생하는 이유
크롬 브라우저는 자동 업데이트로 버전이 계속 바뀝니다. 문제는 ChromeDriver도 크롬 버전에 정확히 맞는 버전을 사용해야 한다는 점입니다. 크롬이 업데이트되었는데 드라이버는 이전 버전 그대로라면, 통역사가 갑자기 다른 언어를 쓰기 시작한 것과 같아서 오류가 발생합니다.
오류 유형별 원인과 해결법
오류 1 — WebDriverException: 'chromedriver' executable needs to be in PATH
원인: ChromeDriver 실행 파일이 없거나, 있어도 시스템이 위치를 모르는 경우입니다.
Selenium 4.6 이전 방식 (수동 설치)
from selenium import webdriver
# 드라이버 경로를 직접 지정하는 구버전 방식
driver = webdriver.Chrome(executable_path='C:/chromedriver/chromedriver.exe')
이 방식은 드라이버 파일을 직접 다운로드하고 경로까지 지정해야 해서 번거롭습니다.
Selenium 4.6 이후 방식 (자동 관리 — 권장)
Selenium 4.6 버전부터는 ChromeDriverManager 없이도 드라이버를 자동으로 관리합니다. 아래처럼 간단하게 사용할 수 있습니다.
from selenium import webdriver
from selenium.webdriver.chrome.service import Service
# Selenium 4.6+ — 드라이버 자동 감지 및 관리
driver = webdriver.Chrome()
driver.get("https://www.google.com")
print(driver.title)
driver.quit()
webdriver-manager를 사용하는 방식 (구버전 호환)
Selenium 4.6 미만 버전을 사용하거나 명시적으로 드라이버를 관리하고 싶다면 webdriver-manager를 사용합니다.
pip install webdriver-manager
from selenium import webdriver
from selenium.webdriver.chrome.service import Service
from webdriver_manager.chrome import ChromeDriverManager
driver_path = ChromeDriverManager().install()
service = Service(driver_path)
driver = webdriver.Chrome(service=service)
driver.get("https://www.google.com")
print(driver_path)
driver.quit()
ChromeDriverManager().install()은 현재 설치된 크롬 버전을 감지하고, 그에 맞는 드라이버를 자동으로 다운로드해서 경로를 반환합니다. 크롬이 업데이트되어도 코드 수정 없이 항상 맞는 버전이 사용됩니다.
오류 2 — SessionNotCreatedException: This version of ChromeDriver only supports Chrome version XX
원인: 설치된 크롬 브라우저 버전과 ChromeDriver 버전이 일치하지 않는 경우입니다. 크롬이 자동 업데이트된 후 가장 많이 발생하는 오류입니다.
마치 한국어-영어 통역사를 고용했는데 갑자기 일본어-영어 자리에 앉힌 것과 같습니다. 통역 대상 자체가 바뀌어버린 상황입니다.
현재 크롬 버전 확인 방법
크롬 브라우저 주소창에 아래를 입력합니다.
chrome://settings/help
해결 방법 — 버전 자동 일치
from selenium import webdriver
from selenium.webdriver.chrome.service import Service
from webdriver_manager.chrome import ChromeDriverManager
# 버전 불일치 걱정 없이 자동으로 맞는 드라이버 설치
service = Service(ChromeDriverManager().install())
driver = webdriver.Chrome(service=service)
또는 Selenium 4.6 이상이라면 아래만으로도 충분합니다.
from selenium import webdriver
driver = webdriver.Chrome() # 버전 자동 감지
오류 3 — NoSuchDriverException 또는 드라이버 다운로드 실패
원인: 네트워크 문제이거나, 회사 방화벽이 드라이버 다운로드 URL을 차단한 경우입니다.
해결 방법 — 수동 다운로드 후 경로 지정
chromedriver.chromium.org또는googlechromelabs.github.io/chrome-for-testing에 접속합니다.- 현재 크롬 버전과 일치하는 드라이버를 다운로드합니다.
- 압축 해제 후 원하는 폴더에 저장합니다.
from selenium import webdriver
from selenium.webdriver.chrome.service import Service
from webdriver_manager.chrome import ChromeDriverManager
from webdriver_manager.core.driver_cache import DriverCacheManager
# 1. 드라이버가 저장될 원하는 루트 폴더(C:\drivers)를 캐시 매니저에 설정합니다.
custom_cache_manager = DriverCacheManager(root_dir=r"C:\drivers")
# 2. 설정한 캐시 매니저를 주입하여 드라이버를 자동 다운로드하고 경로를 반환받습니다.
driver_path = ChromeDriverManager(cache_manager=custom_cache_manager).install()
print(f"실제 다운로드된 경로: {driver_path}")
service = Service(executable_path=driver_path)
driver = webdriver.Chrome(service=service)
driver.get("https://www.google.com")
driver.quit()
오류 4 — PermissionError 또는 바이러스 백신이 드라이버를 차단하는 경우
원인: Windows Defender나 백신 프로그램이 자동으로 다운로드된 chromedriver.exe를 악성 파일로 오탐지하는 경우입니다.
해결 방법
- 백신 프로그램에서
chromedriver.exe경로를 예외(화이트리스트)로 등록합니다. - 드라이버를 수동으로 공식 사이트에서 다운로드해 사용합니다.
VS Code를 관리자 권한으로 실행합니다.
오류 5 — 헤드리스 모드에서 발생하는 오류
서버 환경이나 화면 없이 실행할 때 헤드리스 모드를 사용합니다. 이때 추가 옵션 없이 실행하면 오류가 발생하거나 정상 동작하지 않을 수 있습니다.
from selenium import webdriver
from selenium.webdriver.chrome.options import Options
options = Options()
options.add_argument('--headless=new') # 헤드리스 모드 (크롬 112+)
options.add_argument('--no-sandbox') # 리눅스 서버 환경 필수
options.add_argument('--disable-dev-shm-usage') # 메모리 부족 방지
options.add_argument('--disable-gpu') # GPU 비활성화
options.add_argument('--window-size=1920,1080') # 해상도 지정
driver = webdriver.Chrome(options=options)
driver.get("https://www.google.com")
print(driver.title)
driver.quit()
Selenium 버전별 올바른 사용법 정리
Selenium의 버전에 따라 드라이버 초기화 방식이 다릅니다. 인터넷에서 찾은 코드가 버전이 달라 작동하지 않는 경우가 많으므로 반드시 확인이 필요합니다.
# 현재 설치된 Selenium 버전 확인
import selenium
print(selenium.__version__)
# Selenium 3.x — 구버전 방식 (현재 비권장)
from selenium import webdriver
driver = webdriver.Chrome(executable_path='/path/to/chromedriver')
# Selenium 4.0 ~ 4.5 — Service 객체 사용
from selenium import webdriver
from selenium.webdriver.chrome.service import Service
service = Service('/path/to/chromedriver')
driver = webdriver.Chrome(service=service)
# Selenium 4.6 이상 — 드라이버 자동 관리 (현재 권장)
from selenium import webdriver
driver = webdriver.Chrome() # 경로 지정 불필요
빠른 진단 체크리스트
ChromeDriver 오류가 발생했을 때 아래 순서로 확인하면 대부분 해결됩니다.
# 1. Selenium 버전 확인
pip show selenium
# 2. 최신 버전으로 업그레이드
pip install --upgrade selenium
# 3. webdriver-manager 설치 (4.6 미만인 경우)
pip install webdriver-manager
# 4. 크롬 버전 확인 — 브라우저 주소창에 입력
# chrome://settings/help
마무리
✅ Selenium ChromeDriver 오류 해결 핵심 요약
- Selenium 4.6 이상 —
webdriver.Chrome()한 줄로 드라이버 자동 관리, 별도 설정 불필요 - Selenium 4.6 미만 —
webdriver-manager라이브러리로 버전 자동 일치 - 버전 불일치 오류 —
pip install --upgrade selenium으로 최신 버전 업그레이드 - 네트워크 차단 환경 — 공식 사이트에서 수동 다운로드 후 경로 직접 지정
- 헤드리스 모드 —
--headless=new,--no-sandbox,--disable-dev-shm-usage옵션 필수 - 백신 오탐지 — 드라이버 경로를 예외 목록에 등록하거나 관리자 권한으로 실행
Selenium ChromeDriver 오류는 원인만 파악하면 대부분 5분 안에 해결됩니다. vscode에서 Selenium을 처음 설정한다면 Selenium 4.6 이상 버전을 설치해 드라이버 자동 관리 방식을 사용하는 것이 가장 간편하고 유지보수 부담도 없습니다.
댓글
댓글 쓰기