Python

[Selenium] 현재 설치된 Google Chrome에 맞는 chromedriver 자동으로 가져오기 (feat. webdriver-manager)

메바동 2023. 1. 2. 21:33
728x90

 

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/

 

webdriver-manager

Library provides the way to automatically manage drivers for different browsers

pypi.org

 

728x90