셀레니움 사용 시 ChromeDriverManager 오류 해결 방법
회사에서 하도 웹자동화 구축하라고 해서 셀레니움 공부 시작 .. !
셀레니움 설치하고 페이지 로딩하려고 했을 때 아래와 같은 에러 나는 이유는
크롬드라이버 버전이 현재 사용중인 크롬 브라우저 버전과 호환이 되지 않아서 발생한다.
selenium.common.exceptions.SessionNotCreatedException: Message: session not created: This version of ChromeDriver only supports
예전에는 크롬드라이버를 크롬 버전에 맞게 업데이트를 해줘야 했는데
이제는 WebDriverManager를 사용하면 ChromeDriver 버전을 자동으로 관리할 수 있다.
WebDriverManager 설치 과정은 아래와 같다.
pip install webdriver-manager
자동 버전 관리 코드
from selenium import webdriver
from webdriver_manager.chrome import ChromeDriverManager
# WebDriverManager로 ChromeDriver 자동 관리
driver = webdriver.Chrome(ChromeDriverManager().install())
# 테스트 URL 열기
driver.get("https://www.google.com")
print(driver.title)
driver.quit()
근데 위처럼 짰더니 "AttributeError: 'str' object has no attribute 'capabilities'" 이런 에러가 발생하는 경우가 있다.
(내가 그랬음)
이 문제는 Selenium 4.10.0 이상의 버전에서 webdriver.Chrome() 호출 시, ChromeDriverManager().install()의 반환값이 올바르게 처리되지 않았을 때 발생한다고 한다.
ChromeDriverManager().install()은 **드라이버 경로(문자열)**를 반환하지만, Selenium에서는 이를 Service 객체로 명시적으로 설정해야하기 때문에 Service 객체를 명시적으로 사용하여 드라이버를 초기화해야 한다.
아래의 코드로 초기화하면 해결 !
from selenium import webdriver
from selenium.webdriver.chrome.service import Service
from webdriver_manager.chrome import ChromeDriverManager
# Service 객체를 생성하여 경로 설정
service = Service(ChromeDriverManager().install())
# WebDriver 초기화
driver = webdriver.Chrome(service=service)
# 테스트 실행
driver.get("https://www.google.com")
print(driver.title)
driver.quit()
이거로 아까운 15분 날렸 ..
다들 저랑 같은 문제 발생하신 분들 해결하길 바래용