파이썬으로 웹 자동화를 하다 보면 크롬 브라우저와 크롬드라이버 버전이 맞지 않아서 오류가 발생하는 경우가 정말 많아요. 특히 크롬이 자동 업데이트되면서 기존에 잘 돌아가던 코드가 갑자기 작동하지 않는 상황을 자주 겪게 되죠.
Chrome 127 버전부터는 기존에 사용하던 방식들이 제대로 작동하지 않는 경우가 많아졌어요. chromedriver_autoinstaller나 webdriver-manager같은 패키지들이 더 이상 정상적으로 동작하지 않을 수 있거든요.
Selenium 4.6 이상 버전의 자동 해결 방법
가장 간단한 해결책은 Selenium을 최신 버전으로 업그레이드하는 거예요. Selenium 4.6 이상 버전에는 Selenium Manager라는 기능이 내장되어 있어서, 별도의 드라이버 관리 없이도 자동으로 크롬 버전에 맞는 드라이버를 찾아서 설치해줘요.
먼저 터미널에서 Selenium을 최신 버전으로 업그레이드해주세요.
pip install -U selenium
이제 코드를 실행해보면 놀랍게도 다음 한 줄만으로 모든 게 해결돼요.
from selenium import webdriver
driver = webdriver.Chrome() # 자동으로 드라이버 다운로드 및 실행
driver.get("https://www.google.com")
print(driver.title)
driver.quit()
별도의 chromedriver 경로 지정이나 추가 패키지 설치가 전혀 필요 없어요. Selenium Manager가 현재 설치된 Chrome 브라우저 버전을 자동으로 감지하고, 그에 맞는 드라이버를 다운로드해서 실행시켜줘요.
macOS에서 발생할 수 있는 문제와 해결법
macOS를 사용하시는 분들은 가끔 보안 관련 경고가 뜰 수 있어요. 터미널에서 처음 실행할 때 "개발자를 확인할 수 없기 때문에 열 수 없습니다"라는 메시지가 나타날 수 있거든요.
이런 경우에는 시스템 환경설정에서 보안 및 개인정보 보호로 들어가서 "확인 없이 열기"를 클릭하면 돼요. 또는 터미널에서 다음 명령어를 실행해서 해결할 수도 있어요.
xattr -d com.apple.quarantine /path/to/chromedriver
기존 방식들의 한계와 대안
예전에는 chromedriver_autoinstaller나 webdriver-manager를 많이 사용했지만, Chrome 127 버전 이후로는 이런 패키지들이 제대로 작동하지 않을 수 있어요. Google이 크롬드라이버 다운로드 체계를 변경했기 때문이에요.
만약 특별한 이유로 기존 방식을 계속 사용해야 한다면, get-chrome-driver라는 대안 패키지를 사용할 수 있어요.
pip install get-chrome-driver
from get_chrome_driver import GetChromeDriver
from selenium import webdriver
# 크롬드라이버 자동 설치
get_driver = GetChromeDriver()
get_driver.install()
# Selenium 실행
driver = webdriver.Chrome()
driver.get("https://www.google.com")
driver.quit()
특수한 환경에서의 대응 방법
회사 내부망이나 방화벽 때문에 자동 다운로드가 안 되는 경우가 있어요. 이럴 때는 Chrome for Testing 공식 사이트에서 직접 드라이버를 다운로드해서 사용할 수 있어요.
from selenium import webdriver
from selenium.webdriver.chrome.service import Service
# 직접 다운로드한 드라이버 경로 지정
service = Service('/Users/username/Downloads/chromedriver')
driver = webdriver.Chrome(service=service)
driver.get("https://www.google.com")
driver.quit()
macOS에서는 홈 디렉토리에 드라이버를 저장하고 경로를 지정하는 방법도 있어요.
import os
from selenium import webdriver
from selenium.webdriver.chrome.service import Service
# 홈 디렉토리에 드라이버 저장
home_dir = os.path.expanduser("~")
driver_path = os.path.join(home_dir, "chromedriver")
service = Service(driver_path)
driver = webdriver.Chrome(service=service)
버전 확인 및 디버깅 방법
현재 Chrome 브라우저 버전을 확인하려면 브라우저 주소창에 chrome://version을 입력하면 돼요. 또는 터미널에서도 확인할 수 있어요.
# macOS에서 Chrome 버전 확인
/Applications/Google\ Chrome.app/Contents/MacOS/Google\ Chrome --version
Selenium에서 사용 중인 드라이버 버전을 확인하는 코드예요.
from selenium import webdriver
driver = webdriver.Chrome()
print(driver.capabilities['browserVersion'])
print(driver.capabilities['chrome']['chromedriverVersion'])
driver.quit()
여러 버전의 Chrome이 설치된 경우
macOS에서는 여러 버전의 Chrome을 동시에 사용하는 경우가 있어요. Chrome Canary나 Chrome Beta를 사용하고 싶다면 다음과 같이 경로를 지정할 수 있어요.
from selenium import webdriver
from selenium.webdriver.chrome.options import Options
options = Options()
# Chrome Canary 사용
options.binary_location = "/Applications/Google Chrome Canary.app/Contents/MacOS/Google Chrome Canary"
driver = webdriver.Chrome(options=options)
driver.get("https://www.google.com")
driver.quit()
에러 메시지별 해결 방법
자주 발생하는 에러 메시지와 해결 방법을 정리해봤어요.
SessionNotCreatedException 에러가 발생하는 경우:
# 에러 발생 코드
driver = webdriver.Chrome()
# selenium.common.exceptions.SessionNotCreatedException: Message: session not created
# 해결 방법: Selenium 업데이트
# pip install -U selenium
chromedriver cannot be opened because the developer cannot be verified 에러:
# macOS 보안 설정 문제
# 해결: 시스템 환경설정에서 허용하거나
# 터미널에서: sudo spctl --master-disable
완전 자동화 스크립트 예제
모든 상황을 고려한 완전 자동화 스크립트를 만들어봤어요.
from selenium import webdriver
from selenium.webdriver.chrome.service import Service
from selenium.common.exceptions import WebDriverException
import sys
import os
def setup_chrome_driver():
try:
# 1차 시도: Selenium Manager 사용 (권장)
driver = webdriver.Chrome()
print("Selenium Manager로 자동 설정 성공")
return driver
except WebDriverException as e:
print(f"자동 설정 실패: {e}")
# 2차 시도: get-chrome-driver 사용
try:
from get_chrome_driver import GetChromeDriver
get_driver = GetChromeDriver()
get_driver.install()
driver = webdriver.Chrome()
print("get-chrome-driver로 설정 성공")
return driver
except:
print("get-chrome-driver 방식도 실패")
# 3차 시도: 수동 경로 지정
if sys.platform == "darwin": # macOS
possible_paths = [
"/usr/local/bin/chromedriver",
os.path.expanduser("~/chromedriver"),
"./chromedriver"
]
for path in possible_paths:
if os.path.exists(path):
service = Service(path)
driver = webdriver.Chrome(service=service)
print(f"수동 경로 {path}에서 성공")
return driver
raise Exception("모든 방법 실패. Chrome과 chromedriver를 확인하세요.")
# 사용 예제
try:
driver = setup_chrome_driver()
driver.get("https://www.naver.com")
print("페이지 로드 성공:", driver.title)
driver.quit()
except Exception as e:
print(f"오류 발생: {e}")
이렇게 하면 대부분의 상황에서 크롬드라이버 버전 문제를 자동으로 해결할 수 있어요. 2025년 현재 가장 권장되는 방법은 Selenium 4.6 이상 버전을 사용해서 Selenium Manager에 모든 걸 맡기는 방식이에요. 별도의 드라이버 관리가 필요 없어서 정말 편리해졌어요.