Selenium을 사용하여 웹 자동화 작업을 할 때 가장 번거로운 일 중 하나는 브라우저 드라이버를 관리하는 것입니다. 특히 Chrome, Firefox 등의 브라우저가 업데이트될 때마다 그에 맞는 드라이버를 수동으로 다운로드하고 경로를 설정해야 하는 불편함이 있었습니다. 이런 문제를 해결해주는 것이 바로 WebDriver Manager입니다.
기존 Selenium 드라이버 설정 방식의 불편함
기존 Selenium 사용 방식은 다음과 같은 여러 단계를 거쳐야 했습니다:
- 브라우저 버전 확인
- 해당 버전에 맞는 드라이버 수동 다운로드
- 다운로드한 드라이버를 적절한 위치에 저장
- 코드에서 드라이버 경로 지정
- 브라우저 업데이트 시 위 과정 반복
이런 방식은 다음과 같은 문제점을 가지고 있었습니다:
- 자동화 스크립트를 다른 환경에서 실행할 때마다 드라이버 설정 필요
- CI/CD 파이프라인에서 실행 시 추가 설정 필요
- 브라우저 업데이트에 따른 지속적인 유지보수 필요
WebDriver Manager를 통한 자동 업데이트 방법
WebDriver Manager는 이러한 문제를 해결하기 위한 라이브러리로, 필요한 드라이버를 자동으로 다운로드하고 관리해줍니다.
설치 방법
먼저 webdriver-manager 패키지를 설치합니다:
pip install webdriver-manager
Chrome 드라이버 자동 설정 예제
from selenium import webdriver
from selenium.webdriver.chrome.service import Service
from webdriver_manager.chrome import ChromeDriverManage
# 자동으로 적합한 크롬 드라이버를 다운로드하고 설정
service = Service(ChromeDriverManager().install())
driver = webdriver.Chrome(service=service)
# 이제 평소처럼 Selenium 사용
driver.get("https://www.example.com")
print(driver.title)
driver.quit()
다양한 브라우저 지원
WebDriver Manager는 Chrome뿐만 아니라 다양한 브라우저를 지원합니다:
- Firefox:
webdriver_manager.firefox.GeckoDriverManager
- Edge:
webdriver_manager.microsoft.EdgeChromiumDriverManager
- Internet Explorer:
webdriver_manager.microsoft.IEDriverManager
- Opera:
webdriver_manager.opera.OperaDriverManager
WebDriver Manager 사용 시 장점
- 드라이버 자동 다운로드: 브라우저 버전에 맞는 드라이버 자동 설치
- 크로스 플랫폼 지원: Windows, macOS, Linux에서 모두 동일하게 작동
- 코드 이식성 향상: 다른 환경에서도 추가 설정 없이 동작
- CI/CD 환경 친화적: 자동화된 테스트 환경에서 별도 설정 불필요
- 유지보수 감소: 브라우저 업데이트에 자동 대응
주의해야 할 사항 및 고급 설정
WebDriver Manager를 사용할 때 알아두면 좋은 몇 가지 주의사항과 고급 설정을 살펴보겠습니다:
1. 캐시 관리
WebDriver Manager는 다운로드한 드라이버를 캐시하여 재사용합니다. 캐시 위치를 지정하거나 캐시 사용을 제어할 수 있습니다:
driver_path = ChromeDriverManager(path=”./drivers”).install()
# 또는 캐시 무시하고 항상 새로 다운로드
driver_path = ChromeDriverManager(cache_valid_range=0).install()
2. 프록시 설정
회사 네트워크에서 프록시를 사용해야 하는 경우:
driver_path = ChromeDriverManager(proxy=”http://proxy.example.com:8080″).install()
3. 특정 버전 지정
특정 버전의 드라이버가 필요한 경우:
driver_path = ChromeDriverManager(version=”94.0.4606.61″).install()
4. 로깅 제어
WebDriver Manager의 로그 출력을 제어할 수 있습니다:
import logging
logging.getLogger(‘WDM’).setLevel(logging.NOTSET)
5. 헤드리스 모드와의 조합
자동화된 환경에서 많이 사용하는 헤드리스 모드와 함께 사용하는 예:
from selenium import webdriver
from selenium.webdriver.chrome.service import Service
from selenium.webdriver.chrome.options import Options
from webdriver_manager.chrome import ChromeDriverManageroptions = Options()
options.add_argument(“–headless”)
options.add_argument(“–no-sandbox”)
options.add_argument(“–disable-dev-shm-usage”)
service = Service(ChromeDriverManager().install())
driver = webdriver.Chrome(service=service, options=options)
결론
WebDriver Manager는 Selenium 사용 시 드라이버 관리의 번거로움을 크게 줄여주는 유용한 도구입니다. 특히 여러 환경에서 실행되는 자동화 스크립트나 CI/CD 파이프라인에서 사용할 때 그 가치가 더욱 빛납니다. 브라우저 업데이트에 따른 드라이버 호환성 문제를 자동으로 해결해주므로, 더 안정적인 웹 자동화 솔루션을 구축할 수 있습니다.
이제 드라이버 관리에 시간을 낭비하지 말고, WebDriver Manager를 활용하여 더 효율적인 Selenium 자동화 스크립트를 작성해보세요!
답글 남기기