본문 바로가기
파이썬트러블슈팅

chromedriver_autoinstaller NoSuchDriverException 해결방법

by 하이어시스템 2023. 8. 17.
반응형

========================================================================

2023.12.12

현재 chromedriver_autoinstaller는 설치 이후 별도의 조치를 취하지 않아도 크롬드라이버가 정상적으로 다운로드됨을 확인하였습니다. 따라서 이 블로그의 글은 참고로만 읽으시면 될 것 같습니다.

========================================================================

 

 

하이어시스템 소개

 

하이어시스템 소개 feat.김프로

소개 안녕하세요, 저는 하이어시스템의 김프로입니다. 여러분들이 어려움을 겪고 계신 일상 업무를 저의 안정적이고 빠른 소프트웨어로 자동화하는 것, 그것이 저의 목표입니다. '하이어시스템

wise-office-worker.tistory.com

1. 현상

최근 chromedriver_autoinstaller 가 정상적으로 작동하지 않는 문제로 기존 배포한 프로그램들에서 이슈가 지속적으로 발생하고 있으나 chromedriver_autoinstaller 모듈이 업데이트 되지 않아 불가피하게 직접 모듈을 패치해야 하는 상황입니다. 패치 내용을 공유드리니 셀레니움 자동화 프로그램 크롬드라이버 자동업데이트에 참고하시기 바랍니다.

 

2. 원인

원인은 자동으로 업데이트 된 크롬의 버전과  "the Chrome for Testing availability dashboard" 에서 stable 로 지정한 크롬과 버전이 달라서 chromedriver_autoinstaller이 다운로드 받아야 할 크롬 드라이버 버전을 찾지 못하는 문제입니다.

 

1)크롬 버전:116.0.5845.97

2)크롬드라이버 버전:116.0.5845.96

https://chromedriver.chromium.org/downloads

 

ChromeDriver - WebDriver for Chrome - Downloads

Current Releases If you are using Chrome version 115 or newer, please consult the Chrome for Testing availability dashboard. This page provides convenient JSON endpoints for specific ChromeDriver version downloading. For older versions of Chrome, please se

chromedriver.chromium.org

 

https://googlechromelabs.github.io/chrome-for-testing/

 

자세히 보면 버전의 맨 마지막 한자리가 차이가 나는것이 확인됩니다. 저는 이 차이가 어떤원인으로 발생하는지는 알 수 없지만 이 차이 때문에 chromedriver_autoinstaller 에서 내려받을 크롬 드라이버를 찾지 못함을 확인하였습니다.

 

3. 해결방법

chromedriver_autoinstaller 모듈이 업데이트 되길 바랬으나 기다려도 소식이 없고 이슈가 커지기 전에 대안을 마련해야 했습니다. 그래서 chromedriver_autoinstaller 를 직접 패치하도록 합니다.

 

가상환경에 설치된 chromedriver_autoinstaller 하위의 utils.py를 수정합니다.

위의 녹색 박스는 기존 코드인데 이를 주석처리하고, 붉은색 박스의 새로운 코드로 패치합니다. 코드는 여기에도 올려드리도록 하겠습니다.

last_dot_index = good_version['version'].rfind('.')
cleansing_driver_version = good_version['version'][:last_dot_index]
            
last_dot_index = chrome_version.rfind('.')
cleansing_chrome_version = chrome_version[:last_dot_index]
            
if cleansing_driver_version == cleansing_chrome_version:
    return good_version["version"]

 

이 후 실행하면 아래와 같이 정상적으로 크롬드라이버가 설치됨을 알 수 있습니다.

 

참고로 크롬드라이버 자동설치 코드는 인터넷에 많이 공유된 코드와 동일하게 사용하고 있습니다.

# Chromedriver Auto Install         
full_chrome_ver = chromedriver_autoinstaller.get_chrome_version()
chrome_ver = full_chrome_ver.split('.')[0]
driver_path = f'./{chrome_ver}/chromedriver.exe'
if not os.path.exists(driver_path):
    chromedriver_autoinstaller.install(True)

 

 

반응형