728x90
셀레니움을 회사에서는 예전에 만들어놓은 패키지들로 설치를 했었기에 몰랐었는데, 이번에 본가 데스크톱에 파이썬과 셀레니움을 설치하고 사용해보니 지원 중단 경고가 뜨고 있었다.
executable_path가 지원 중단되었으니, 서비스 객체를 넘기라고 되어있는데 이게 무슨 말인가 싶어 찾아보았다.
찾아보니 2021년 10월 22일에 수정된 Selnium 4.0 Beta 1 변경 로그에 드라이버 인스턴스화 시 Options와 Service 인수를 제외한 인수들을 사용하지 않기로 되어 있다고 한다.
그러니까 기존에는 브라우저에 맞는 드라이버를 다운로드한 뒤, 셀레니움 드라이버 인스턴스화 시 해당 브라우저 드라이버의 경로를 executable_path로 전달해주어야 했는데, 4.0 버전 이후부터는 Service 인수를 사용하여 해당 브라우저 드라이버의 경로를 전달해주어야 한다.
from selenium import webdriver
from selenium.webdriver.chrome.service import Service
def get_chrome_driver():
options = webdriver.ChromeOptions()
# option 추가
chrome_path = r'{chromedriver 경로}'
driver = webdriver.Chrome(service=Service(chrome_path), options=options)
return driver
Chrome Service를 기준으로 하면 매개변수는 다음과 같다.
Service(exeuctable_path: str = 'chromedriver', port: int = 0,
service_args: Optional[List[str], None] = None,
log_path: Optional[str, None] = None,
env: Optional[Mapping[str, str], None] = None)
# executable_path: chromedriver 실행 파일의 설치 경로
# port: 실행할 서비스의 포트, 기본적으로 운영 체제가 결정하는 0
# service_args: 실행 파일을 시작할 때 하위 프로세스에 전달할 인수 목록
# log_path: 실행 파일에 -log-path로 전달할 문자열
# env: 새 프로세스에 대한 환경 변수 매핑
드라이버 인스턴스화 시 직접 executable_path를 전달했을 때, 위와 같이 나타나던 경고가
Service 객체로 전달했을 때, 나타나지 않는 것을 확인할 수 있다.
728x90
'Python' 카테고리의 다른 글
[Selenium] Selenium의 Session을 requests 라이브러리에서 사용하기 (0) | 2023.01.05 |
---|---|
[Selenium] 현재 설치된 Google Chrome에 맞는 chromedriver 자동으로 가져오기 (feat. webdriver-manager) (2) | 2023.01.02 |
[Selenium] Selenium 화면에서 요소가 사라질 때까지 대기하기 (0) | 2022.12.20 |
[Selenium] Selenium에서 크롬 확장 프로그램 사용하기 (feat. Google Chrome 설치된 확장 프로그램에서 crx 파일 추출하기) (0) | 2022.12.01 |
[Python] Python Thread 종료 시키기 (0) | 2022.04.30 |