Selenium을 사용한 프로젝트를 오랜만에 하다 보면 다음과 같은 에러를 마주치는 일이 생긴다.
컴퓨터에 설치된 Google Chrome의 버전과 chromdriver의 버전이 서로 맞지 않을 때 생기는 에러인데, 서로 버전만 맞춰주면 되지만 프로젝트를 실행할 때마다 chromedriver의 버전을 신경 쓰는 일은 생각보다 귀찮다.
이런 귀찮음을 해결해주기 위해 webdriver-manager라는 모듈이 존재한다.
사용 방법은 굉장히 간단하다. 우선 모듈을 사용하기 위해 pip을 사용하여 webdriver-manager를 설치해 준다.
pip install webdriver-manager
그런 뒤 기존에
from selenium import webdriver
from selenium.webdriver.chrome.service import Service
driver = webdriver.Chrome(service=Service('{chromedriver 경로'))
chromedriver 경로를 Service의 executable_path의 인수로 넘겨주던 부분을
from selenium import webdriver
from selenium.webdriver.chrome.service import Service
from webdriver_manager.chrome import ChromeDriverManager
driver = webdriver.Chrome(service=Service(ChromeDriverManager().install())
webdriver_manager 모듈을 불러온 뒤 브라우저에 맞는 Manager를 호출해주면 자동으로 설치된 Google Chrome의 버전에 맞는 chromedriver를 받아와 받아온 chromedriver의 경로를 executable_path로 넘겨준다.
위의 방법은 앞선 포스팅에서 알아봤듯 Selenium 4 버전의 사용법이고 Selenium 3 버전을 사용할 경우
from selenium import webdriver
from webdriver_manager.chrome import ChromeDriverManager
driver = webdriver.Chrome(ChromeDriverManager().install())
Service 객체를 넘기지 않고 직접 executable_path를 넘기면 된다.
다만, 최초 실행 시 설치된 Google Chrome에 맞는 chromedriver를 받아오기 때문에 인터넷이 연결된 환경에서 진행해야 한다.
# Windows
C:\Users\{사용자명}\.wdm\drivers\chromedriver
# Linux or Mac
~/.wdm/drivers/chromedriver
또한, 다운로드된 chromedriver는 위 경로에 받아지기 때문에 용량이 적은 환경에서 작업을 하는 경우 해당 디렉터리로 이동하여 종종 사용하지 않는 chromedriver를 제거해주는 것이 좋을 것 같다.
chromedriver 외에도 geckodriver, iedriver, operadriver, edgechromiumdriver를 지원한다.
Chromium, Brave와 같은 기타 Chromium 기반 브라우저 또는 Firefox, IE, Edge, Opera 브라우저의 webdriver-manager 사용 방법은 아래 링크를 참조하면 어렵지 않게 사용할 수 있다.
https://pypi.org/project/webdriver-manager/