반응형

안녕하세요, 왕초보 코린이를 위한 코딩유치원에 오신 것을 환영합니다.

코딩유치원에서는 파이썬 기초부터 사무자동화, 웹크롤링, 데이터 분석 등의 다양한 패키지까지 초보자도 알기 쉽도록 내용을 정리해 놓았습니다.

 

2022.03.11 - [파이썬 패키지/라이브러리&패키지 소개] - 파이썬 주요 라이브러리 정리

 

 

 

오늘은 23년 7월경 부터 발생하기 시작한 Chromedriver 에러의 원인과 해결법에 대해서 알아보겠습니다.

 

[요약]

1) 크롬 드라이버는 114 버전 이후 배포 방식을 다르게 변경하여서 webdriver_manager로는 자동 다운로드가 되지 않음.

2) 사실은 selenium 4.6 버전 (2022년 4월) 이후로 webdriver_manager 없이 크롬 드라이버 자동 다운로드가 가능함.

3) 현재 2023년 9월 16일 기준, selenium 버전은 4.12이며, pip install --upgrade selenium으로 업그레이드 한 후, 아래의 코드로 실행하면 크롬 드라이버 115버전 이상도 자동 다운로드가 됨.

from selenium import webdriver

# chromedriver 자동 다운로드 됨
driver = webdriver.Chrome()

driver.get('https://www.naver.com')

 

 


1. History

 

1) 직접 다운로드 방식

 

 Chromedriver를 처음 배울 때에는 크롬이 업데이트 될 때마다 크롬 드라이버를 다운로드하는 곳에서 매번 크롬과 동일한 버전의 Chromedriver를 다운로드 받아서 사용했습니다. 다운로드 경로를 설정해줘야 하고, 크롬 버전이 자동 업데이트 되면 코드가 에러가 나는 불편함이 있었죠.

(참고글:  2021.03.23 - [파이썬 패키지/웹 크롤링] - [Python/웹 크롤링] 크롬드라이버 크롬 버전에 맞춰서 설치하는법)

 

[사용 방식]

from selenium import webdriver

# chromedriver가 저장된 경로 직접 입력
driver = webdriver.Chrome(r'C:\users\chromedriver.exe')

driver.get('https://www.naver.com')

 

 

2) 자동 다운로드 방식 (With webdriver_manager)

 

 매번 크롬 버전에 맞춰서 다운로드 받아야하는 불편함을 해결하기 위해서, webdriver_manager라는 모듈을 설치해서 코드를 실행할 때마다 사용자의 크롬 버전에 맞는 크롬 드라이버를 자동 설치하는 방식으로 변경하였습니다. 저도 이 방식으로 최근까지 사용해왔습니다.

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

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

driver.get('https://www.naver.com')

 

2. Chromdriver 버전 에러 발생 원인

 

webdriver_manager는 Chromedriver를 다운로드 받는 사이트(https://chromedriver.chromium.org/downloads)에서 자동으로 크롬 버전에 맞는 크롬 드라이버를 다운로드 받습니다.

 

그러나 114버전 (23년 5월 31일 릴리즈)를 마지막으로 해당 사이트에서는 크롬 드라이버를 배포 하지 않고, 7월 중순경 부터 https://googlechromelabs.github.io/chrome-for-testing/  사이트를 통해 크롬 드라이버를 배포하고 있습니다.

이러한 이유로 webdriver_manger를 통한 자동 다운로드 방식은 더 이상 사용하지 못하게 되었습니다. 이로 인해 전세계적으로 수 많은 selenium 유저들이 혼란을 겪기 시작했죠. 

 

3. Chromdriver 버전 에러 해결 방법

 정말 많은 해결 방법들이 여러 블로그를 통해서 나오고 있지만 명료하지가 않습니다. 결론만 말씀드리면 현재 글을 작성하는 2023년 9월 16일 기준으로 selenium 최신 버전은 4.12.0이며, 4.6.0 미만의 버전을 사용하시는 경우는 버전을 업그레이드 하시고 아래의 코드를 사용하시면 됩니다.

 

[버전 확인 방법]

pip show selenium

[실행 결과]

Name: selenium
Version: 4.5.0
Summary:
Home-page: https://www.selenium.dev
Author:
Author-email:
License: Apache 2.0
Location: C:\Users\SANGWOO\AppData\Local\Programs\Python\Python311\Lib\site-packages
Requires: certifi, trio, trio-websocket, urllib3
Required-by:

 

[버전 업그레이드 방법]

pip install --upgrade selenium

[실행 결과]

Installing collected packages: selenium
  Attempting uninstall: selenium
    Found existing installation: selenium 4.5.0
    Uninstalling selenium-4.5.0:
      Successfully uninstalled selenium-4.5.0
Successfully installed selenium-4.12.0

 

selenium 버전을 업그레이드 하셨다면 사용하시는 IDE를 종료했다가 재시작 해주시고, 아래의 코드로 chromedriver를 실행해보세요. webdriver 모듈만으로도 크롬 드라이버 자동 다운로드가 되고 실행되는 것을 확인하실 수 있을거예요.

from selenium import webdriver

# chromedriver가 저장된 경로 직접 입력
driver = webdriver.Chrome()

driver.get('https://www.naver.com')

 


이상으로 최근 selenium 사용자들이 가장 많이 겪는, 모르면 너무 답답한 문제의 원인과 해결방법에 대해서 알아보았습니다. 많은 분들께 도움이 되기를 바랍니다.

 

 

 

 

반응형

+ Recent posts