본문 바로가기
etc./Tips

[Error 해결] ValueError: There is no such driver by url https://chromedriver.storage.googleapis.com/

by 삼SAM 2024. 2. 3.

에러 메시지

ValueError: There is no such driver by url https://chromedriver.storage.googleapis.com/LATEST_RELEASE_120.0.6099

 

 

에러 발생 코드

from selenium import webdriver
from selenium.webdriver.chrome.service import Service
from webdriver_manager.chrome import ChromeDriverManager

driver = webdriver.Chrome(service=Service(ChromeDriverManager().install()))

 

 

에러 발생 원인

셀레니움으로 크롬을 제어하려면 크롬 버전에 맞는 드라이버를 설치해줘야 한다.

ChromeDriverManager().install()

해당 코드 부분이 설치된 크롬의 버전을 확인한 후, 해당 버전에 해당하는 API 키값을 요청하는 URL을 생성하여 캐시에 해당 드라이버를 설치하도록 유도한다.

 

URL 생성은 "https://chromedriver.storage.googleapis.com/" 뒤에 크롬의 버전 Key값이 입력되는 방식이다.

그러나 "114.0.5735" 버전 이후 버전부터는 해당하는 URL은 위와 같은 방식으로 접근이 불가하다.

 

만들어진 URL이 없는 URL이므로 해당 URL에서는 드라이버를 다운받아 설치할 수 없다는 에러가 발생하는 것이다.

 

 

해결 방법

위에서 언급한 URL 생성 방식은 오래된 webdriver-manager 버전에서 사용하는 방식이다.

최신 버전의 webdriver-manager로 업데이트해주면 적절한 버전의 드라이버를 다른 방식으로 설치해주기 때문에 같은 코드에서 더 이상 에러가 발생하지 않고 정상 작동한다.

 

pip uninstall webdriver-manager
pip install webdriver-manager

즉, 위와 같이 삭제 후 재설치하거나 아래와 같이 버전 업그레이드를 해주는 방식으로 해결이 가능하다.

 

pip install webdriver-manager --upgrade

 

필자는 간혹 업그레이드 과정에서 이전 버전이 유지되는 경우를 경험하여 삭제 후 재설치하는 방식을 선호한다.

 

 

Appendix

인터넷에 해당 문제 해결 방법에 대해 검색 시 앞서 언급했던 URL접근이 가능한 마지막 버전 Key값으로 지정해서 설치해주는 방법으로 해결했다는 글이 있었다.

ChromeDriverManager(version='114.0.5735.90').install()

 

위와 같이 코드에 해당 버전을 지정해주는 방식인데, 이는 23년 7월까지는 이를 통해 해결했다는 글이 확인되었다.

 

이는 사용 중인 크롬 버전에 맞는 드라이버가 아닌 것을 설치하여 작동하게 하는 방식으로 추천할만한 방식이 아닐 뿐더러 해당 버전과 실제 사용 중인 버전 사이 갭이 크다면 어차피 작동하지 않는다.

 

브라우저 옵션에 어떤 설정값을 넣어서 에러를 무시하고 작동하도록 유도하는 방식도 보았으나 마찬가지로 정상적인 접근 방식은 아니라는 생각이 들어서 역시 추천하지 않는다. 그리고 호기심에 적용해보았으나 필자의 사례에서는 어차피 작동하지도 않았다.

 

마지막으로 실제 사용 중인 버전에 맞는 크롬 드라이버를 별도로 Local 경로에 설치 후 셀레니움에서 해당 경로의 드라이버를 사용하도록 하는 방법이 있다.

 

이는 정상적인 방법이지만, 크롬이 수시로 업데이트 될때마다 해당 버전에 맞는 드라이버를 설치해줘야 하는 번거로움이 있다. 해결 방법에서 언급한 대로 webdriver-manager를 최신 버전으로 설치해주면  훨씬 간편하다. 에러 발생 코드에서 언급된 코드가 크롬 브라우저가 업데이트 될 때마다 해당 버전에 맞춰서 자동으로 캐시에 설치해주기 때문이다.

댓글