Selenium에서 Chrome Driver 버전 불일치 오류 해결하기 (한국어)

2024-07-27

"selenium-chromedriver"와 관련된 "Chrome driver version (126) can't find the chromedriver.exe" 오류 해결

오류 해결을 위해 다음 단계를 수행하십시오.

Chrome 버전 확인:

  • 현재 사용 중인 Chrome 버전을 확인하십시오.
    • Chrome 브라우저를 엽니다.
    • 주소창에 chrome://version을 입력하고 Enter 키를 누릅니다.
    • "Google Chrome" 섹션 아래에 표시된 버전 번호를 확인하십시오.

ChromeDriver 버전 확인:

  • 현재 설치된 ChromeDriver 버전을 확인하십시오.
    • 명령 프롬프트를 엽니다.
    • where chromedriver를 입력하고 Enter 키를 누릅니다.
    • 설치된 ChromeDriver가 있는 경우 경로와 함께 버전 번호가 표시됩니다.

WebDriver Manager 사용:

  • 매번 Chrome 버전이 업데이트될 때마다 수동으로 ChromeDriver 버전을 확인하고 설치하는 것은 번거로운 일입니다.
from selenium import webdriver
from webdriver_manager.driver import ChromeDriverManager

driver = webdriver.Chrome(ChromeDriverManager().get_chromedriver_version())

추가 참고 사항:

  • Chrome 드라이버와 Chrome 브라우저를 모두 최신 버전으로 유지하는 것이 좋습니다.

위의 단계를 따라하면 "Chrome driver version (126) can't find the chromedriver.exe" 오류를 해결할 수 있을 것입니다.




from selenium import webdriver
from webdriver_manager.driver import ChromeDriverManager

# Chrome 드라이버 경로 설정
options = webdriver.ChromeOptions()
options.add_argument('--headless')  # 브라우저 창을 숨김

driver = webdriver.Chrome(ChromeDriverManager().get_chromedriver_version(), options=options)

# 원하는 웹사이트 URL 입력
url = "https://www.example.com"

# 브라우저 창 열기 및 웹사이트 방문
driver.get(url)

# 원하는 요소 찾기 및 조작
element = driver.find_element_by_id("my-element")
element.click()

# 화면 캡처 (옵션)
driver.save_screenshot("screenshot.png")

# 브라우저 창 닫기
driver.quit()
  • 위 코드는 webdriver-manager를 사용하여 Chrome 드라이버를 자동으로 설치하고, 웹 브라우저를 제어하는 기본적인 예제입니다.
  • headless 옵션을 사용하여 브라우저 창을 숨길 수 있습니다.
  • find_element_by_id 메서드를 사용하여 원하는 웹 페이지 요소를 찾고, click() 메서드를 사용하여 해당 요소를 클릭합니다.
  • save_screenshot 메서드를 사용하여 현재 화면을 캡처하고 이미지 파일로 저장할 수 있습니다.
  • quit() 메서드를 사용하여 브라우저 창을 닫습니다.

주의 사항:

  • 이 코드는 예시이며, 실제 상황에 맞게 수정해야 합니다.
  • 웹 페이지 요소를 찾는 방법은 웹 페이지 구조에 따라 다를 수 있습니다.
  • Selenium 및 WebDriver Manager 사용에 대한 자세한 내용은 공식 문서를 참조하십시오.



  • 장점:
    • Chromedriver 없이 Chrome을 제어할 수 있습니다.
    • Chrome 브라우저의 다양한 버전을 지원합니다.
    • 헤드리스 모드를 포함하여 다양한 Chrome 옵션을 사용할 수 있습니다.
  • 단점:
    • 설정이 다소 복잡할 수 있습니다.
    • 다른 방법들보다 느릴 수 있습니다.
    • 모든 브라우저 버전에서 완벽하게 작동하지 않을 수 있습니다.

RDP를 사용하는 방법:

  1. Chrome 브라우저에서 원격 디버깅을 활성화합니다.
    • Chrome 브라우저 주소창에 chrome://flags를 입력하고 Enter 키를 누릅니다.
    • --remote-debugging-port 플래그를 검색하여 활성화합니다.
    • 원하는 포트 번호를 설정합니다.
  2. Selenium에서 원격 연결을 설정합니다.
    • selenium.webdriver.remote.RemoteWebDriver 클래스를 사용하여 원격 Chrome 브라우저에 연결합니다.
    • 포트 번호, 브라우저 프로필 등 필요한 정보를 제공합니다.

Headless Chrome 브라우저:

  • 장점:
    • 다른 방법들보다 빠릅니다.
  • 단점:
    • 그래픽 사용자 인터페이스(GUI)가 없으므로 사용자 상호 작용이 불가능합니다.

Headless Chrome 브라우저를 사용하는 방법:

  1. pip install headless-chrome 명령어를 사용하여 headless-chrome 패키지를 설치합니다.
  2. 다음과 같은 코드를 사용하여 Headless Chrome 브라우저를 인스턴스화합니다.
from selenium import webdriver

options = webdriver.ChromeOptions()
options.add_argument('--headless')
driver = webdriver.Chrome(options=options)
  1. 원하는 작업을 수행합니다.

자동화 도구:

  • 단점:
    • 무료 버전은 기능이 제한적일 수 있습니다.
    • 모든 자동화 도구가 Chrome을 지원하는 것은 아닙니다.

자동화 도구 사용 방법:

  1. Selenium IDE 또는 Sikuli와 같은 자동화 도구를 설치합니다.
  2. 도구에서 원하는 작업을 기록합니다.
  3. 도구에서 스크립트를 생성합니다.
  4. 스크립트를 실행합니다.

기타 방법:

  • Python의 webbrowser 모듈을 사용하여 기본적인 브라우저 제어 기능을 수행할 수 있습니다.
  • Puppeteer 또는 Playwright와 같은 JavaScript 라이브러리를 사용하여 Chrome을 제어할 수 있습니다.

최적의 방법 선택:

  • 간단한 작업을 수행하려는 경우 headless-chrome 브라우저가 좋은 선택입니다.
  • 더 많은 제어 기능이 필요한 경우 RDP를 사용하는 것이 좋습니다.
  • 사용하기 쉬운 도구를 찾는 경우 자동화 도구를 사용하는 것이 좋습니다.
  • 특정 요구 사항을 충족하는 방법이 필요한 경우 webbrowser 모듈 또는 Puppeteer/Playwright와 같은 JavaScript 라이브러리를 사용하는 것을 고려하십시오.

참고:

  • 위에 제시된 방법 외에도 Chromedriver 없이 Chrome을 제어하는 방법이 있을 수 있습니다.
  • 선택한 방법에 관계없이 최신 버전의 Chrome 브라우저와 Selenium을 사용하는 것이 좋습니다.

selenium-chromedriver

selenium chromedriver

Maven, Selenium-chromedriver, Chrome DevTools Protocol 및 Chrome CDP 126 버전 관련 프로그래밍 정보

해설:1. Chrome DevTools Protocol (CDP):Chrome 브라우저의 내부 동작을 제어하고 디버깅하는 데 사용되는 API입니다.웹 페이지 로딩, DOM 조작, 네트워크 요청 및 응답 등 다양한 작업을 수행하는 데 사용할 수 있습니다


외환 팩토리에서 Selenium을 사용하여 데이터 추출

Selenium-Webdriver와 Selenium-Chromedriver는 Selenium과 함께 사용되는 두 가지 주요 라이브러리입니다.Selenium-Webdriver: 웹 브라우저를 제어하는 데 사용되는 API를 제공합니다