본문 바로가기
🌔Developers

셀레니움 및 크롬드라이버 115이상 버전오류 해결하기

by 키훈마스 2024. 9. 30.
반응형

Chrome Driver 115

 

 

2023년까지는 우리가 흔히 알고 쓰던 크롬드라이버가 완전히 바뀌었습니다.

기존에는 크롬드라이버를 설치하는 방식이었지만, 이제는 폴더 자체가 크롬드라이버가 되는 방식입니다.

https://googlechromelabs.github.io/chrome-for-testing/#stable

 

Chrome for Testing availability

chrome-headless-shellmac-arm64https://storage.googleapis.com/chrome-for-testing-public/130.0.6723.19/mac-arm64/chrome-headless-shell-mac-arm64.zip200

googlechromelabs.github.io

위 사이트에서 맥, 윈도우, 리눅스 등 각자의 환경에 맞게 크롬드라이버 다운로드를 진행해주세요.

여기에서 Mac-arm은 애플 실리콘 M칩 맥을 의미하고, Mac-x는 인텔맥을 의미합니다.

 

다운로드가 끝났다면, 폴더를 하나 보실수 있을 텐데요, 이것이 새로운 크롬드라이버입니다.

 

여기에서 보이는 Google Chrome for Testing을 마우스 우클릭으로 먼저 실행해 주시고, 활성화가 되었다면 이제 셀레니움을 재설치해줍니다. Selenium 4.10 이후 버전에서 ChromeDriverManager가 없어도 Selenium이 자동으로 115 이후 버전의 크롬 드라이버를 다운로드하는 기능을 가지기 때문에 Selenium 업데이트와 기존 코드 수정을 통해 해결할 수 있습니다.

//pip3 설치
pip3 install selenium --upgrade

//pip 업그레이드
pip install selenium --upgrade

//파이썬 특정 버전
python3.x -m pip install selenium --upgradePLAINTEXT

 

Selenium 재설치

pip3 uninstall selenium

pip3 install selenium

 

셀레니움 설치가 완료되었다면, 이제 기존 코드를 수정해봅시다.

코드 예제는 구글에서 "Mars"를 검색한 뒤 가장 첫 번째 페이지로 접속하는 예제 코드입니다.

from selenium import webdriver
from selenium.webdriver.common.by import By
from selenium.webdriver.common.keys import Keys
import time

# WebDriver 경로를 설정하세요.
driver_path = 'path/to/chromedriver'  # 여기에 WebDriver의 경로를 입력하세요.
driver = webdriver.Chrome(executable_path=driver_path)

 

위의 기존 코드에서는 path/to/ChromeDriver 형태로 크롬드라이브를 불러왔습니다. 

아래의 수정된 코드는 다음과 같습니다 :

from selenium import webdriver

from selenium.webdriver.chrome.service import Service
from selenium.webdriver.chrome.options import Options

from selenium.webdriver.common.by import By
from selenium.webdriver.common.keys import Keys

import time


###############################################################################

customService = Service()
customOption = Options()

driver = webdriver.Chrome(service = customService, options = customOption)
 
# Google 열기
driver.get("https://www.google.com")

# 검색창에 "Mars" 입력
search_box = driver.find_element(By.NAME, "q")
search_box.send_keys("Mars")
search_box.send_keys(Keys.RETURN)

# 검색 결과가 로드될 때까지 대기
time.sleep(2)

# 첫 번째 검색 결과 클릭
first_result = driver.find_element(By.XPATH, "(//h3)[1]")  # h3 태그가 있는 첫 번째 결과
first_result.click()

# 프로그램 종료 전 잠시 대기
time.sleep(5)

# 브라우저 닫기
driver.quit()

 

위의 코드를 보면, driver = webdriver.Chrome(service = customService, options = customOption) 으로 드라이브 로드 방식이 변경된걸 확인할수 있습니다. 

 

이제 정상적으로 동작합니다! :)

반응형