Chrome 업데이트 뒤 SessionNotCreatedException이 발생했다면 먼저 오류에 표시된 Chrome과 ChromeDriver의 버전이 맞는지 확인하고, 그다음 실제로 선택된 드라이버 경로와 Selenium Manager 사용 조건을 점검해야 합니다. 이 순서를 따르면 드라이버를 무작정 다시 받기보다 수동 Service 경로, PATH, 자동 관리 환경 중 어디에서 문제가 생겼는지 좁힐 수 있습니다. Selenium 공식 문서도 브라우저와 WebDriver 버전 불일치를 이 오류의 주요 원인으로 설명합니다.
오류 메시지에서 먼저 읽을 부분
This version of ChromeDriver only supports Chrome version ... 문구가 보이면 뒤에 붙은 숫자는 현재 선택된 ChromeDriver가 지원하는 Chrome 버전입니다. 예외 이름만 보고 코드 문법이나 선택자 문제로 접근하기보다, 실행 전 세션 생성 단계에서 브라우저와 드라이버의 호환성이 깨졌는지부터 봅니다. 다만 드라이버 파일이 없거나 실행 권한·접근 권한이 없는 경우에도 세션을 만들지 못할 수 있습니다.
1. 실제 브라우저와 드라이버 버전 확인
설치 파일을 내려받은 기록보다 실행 환경의 값을 우선 확인합니다. 셸에서 다음처럼 각각 확인할 수 있습니다.
google-chrome --version
chromedriver --version
환경에 따라 브라우저 명령 이름은 다를 수 있습니다. 중요한 것은 Chrome의 버전과 Selenium이 실제로 찾는 chromedriver의 버전을 따로 기록하는 일입니다. PATH에 여러 드라이버가 있다면 which chromedriver 또는 운영체제에 맞는 경로 확인 명령으로 선택된 파일 위치도 함께 확인합니다.
Python 코드에서 명시적인 경로를 사용하고 있다면 다음처럼 그 경로가 실제 설정에 들어가는지 먼저 눈으로 확인합니다.
from selenium import webdriver
from selenium.webdriver.chrome.service import Service
service = Service("/path/to/chromedriver")
driver = webdriver.Chrome(service=service)
위와 같은 Service 경로가 남아 있으면 PATH에 새 드라이버를 추가해도 그 파일이 사용되지 않을 수 있습니다. 반대로 경로를 지정하지 않고 Selenium Manager가 동작할 조건이라면 자동 관리 경로를 선택할 수 있습니다.
2. Selenium Manager를 쓸 수 있는 구조인지 확인
Selenium Manager는 Selenium 4.6부터 함께 제공되며, 드라이버를 지정하지 않았을 때 fallback으로 동작합니다. 설치된 브라우저 버전을 탐지해 호환 드라이버를 확인하고 캐시할 수 있지만, 코드에서 오래된 Service 경로를 명시했다면 그 자동 경로에 맡긴다고 볼 수 없습니다.
따라서 선택지는 다음처럼 나눕니다.
- 일반적인 온라인 개발 환경:
Service경로를 제거하고 Selenium Manager가 선택하도록 확인합니다. - CI나 오프라인 환경: 사용할 Chrome과 ChromeDriver를 명시적으로 고정하고, 실행 전에 두 버전과 경로를 로그로 남깁니다.
- 프록시나 방화벽이 있는 환경: 자동 다운로드가 막힐 수 있으므로 프록시 설정과 네트워크 정책을 확인합니다.
Selenium Manager의 기본 캐시는 ~/.cache/selenium이며, 프록시·SE_PROXY·SE_OFFLINE·SE_CACHE_PATH 같은 설정을 지원합니다. 캐시를 지우는 것부터 시작하기보다 현재 캐시 경로와 오프라인 설정이 의도한 값인지 먼저 확인하는 편이 안전합니다.
3. Chrome 버전에 맞는 배포 경로 선택
Chrome 115부터 ChromeDriver 릴리스는 Chrome 릴리스와 통합되었습니다. Chrome 115 이상은 Chrome for Testing 가용성 대시보드나 JSON 엔드포인트에서 대응 버전을 선택하고, 일반 Chrome은 MAJOR.MINOR.BUILD 기준으로 대응 드라이버를 찾습니다. Chrome 114 이하에서는 ChromeDriver의 버전 체계가 Chrome과 같으므로 호환 버전을 맞춰야 합니다.
테스트 환경을 재현해야 한다면 Chrome for Testing의 채널·플랫폼별 버전과 대응 ChromeDriver를 함께 지정하는 방식이 적합합니다. 특정 버전 고정이 필요하지 않은 일반 환경이라면 Selenium Manager에 맡길 수 있는지부터 판단합니다. 여기서 핵심은 “최신 파일”이 아니라 실행 중인 Chrome과 선택된 드라이버의 조합입니다.
4. 수정 후에도 같은 오류가 나올 때
다음 순서로 확인하면 원인을 다시 분리할 수 있습니다.
- 오류 메시지의 지원 Chrome 버전과 현재 Chrome 버전을 비교합니다.
chromedriver --version과 실제 선택 경로를 기록합니다.- Python 코드의
Service(...)지정 여부를 확인합니다. - 드라이버를 지정하지 않는 구조라면 Selenium 버전과 Selenium Manager의 캐시·프록시·오프라인 설정을 확인합니다.
- 수동 관리라면 Chrome과 대응 ChromeDriver를 같은 실행 환경에 배치하고 권한을 확인합니다.
이 과정을 거친 뒤 세션 생성은 통과하지만 요소를 찾거나 클릭하는 단계에서 실패한다면, 그것은 이번 버전 불일치 문제와 다른 범주의 오류일 수 있습니다. 세션이 만들어지는 단계와 페이지 요소를 조작하는 단계를 나누어 로그를 보는 것이 좋습니다.
마무리
SessionNotCreatedException에서 가장 먼저 할 일은 드라이버를 다시 다운로드하는 것이 아니라, 실제 Chrome 버전·실제 ChromeDriver 경로·Service 지정 여부를 확인하는 것입니다. 온라인 환경에서는 Selenium Manager를 검토하고, 프록시·오프라인·재현성이 중요한 환경에서는 대응 버전을 명시적으로 고정하면 선택 기준이 분명해집니다.