오류 메시지 : " 'chromedriver'실행 파일이 경로에 있어야합니다"


171

나는 파이썬과 함께 셀레늄을 사용하고 있으며이 사이트에서 내 Windows 컴퓨터 용 chromedriver를 다운로드했습니다 : http://chromedriver.storage.googleapis.com/index.html?path=2.15/

zip 파일을 다운로드 한 후 zip 파일의 다운로드 폴더로 압축을 풉니 다. 그런 다음 실행 가능한 바이너리 (C : \ Users \ michael \ Downloads \ chromedriver_win32)의 경로를 환경 변수 "경로"에 넣습니다.

그러나 다음 코드를 실행할 때 :

  from selenium import webdriver

  driver = webdriver.Chrome()

... 다음과 같은 오류 메시지가 계속 나타납니다.

WebDriverException: Message: 'chromedriver' executable needs to be available in the path. Please look at     http://docs.seleniumhq.org/download/#thirdPartyDrivers and read up at http://code.google.com/p/selenium/wiki/ChromeDriver

그러나-위에서 설명한 것처럼 실행 파일은 경로에 있습니다 ...! 여기서 무슨 일이 일어나고 있습니까?


20
chromedriver.exePython 스크립트와 동일한 디렉토리에를 복사하십시오 .
Malik Brahimi

4
Chocolatey 를 통해 설치 하면 경로에 추가됩니다 choco install chromedriver.
WhatIsHeDoing

pycharm에서이 문제가 발생하면 다시 시작하면 문제가 해결됩니다.
Charles Chow

ImNt의 답변에 동의합니다. virtualenv를 사용하는 사람들을 위해 추가하고 싶지만 다음 예제 형식을 사용하여 venv 파일에서 관리자로 python을 실행해야합니다. driver = webdriver.Chrome (r'C : / Users / michael / Downloads / chromedriver_win32 /chromedriver.exe ')
Pineda

@MalikBrahimi 나는이 솔루션을 모든 곳에서 검색 해 왔으며 귀하의 의견을 찾을 때까지는 실제로 아무것도 작동하지 않았습니다. 감사합니다
user2720864

답변:


178

cmd를 열고 chromedriver(chromedriver 실행 파일의 이름이 여전히 이와 같다고 가정) 입력하고 Enter 키를 누르면 실제로 PATH에 있는지 테스트 할 수 있습니다 . 경우 Starting ChromeDriver 2.15.322448나타나는되면, PATH가 적절하게 설정하고 잘못가는 뭔가가있다.

또는 다음과 같이 chromedriver의 직접 경로를 사용할 수 있습니다.

 driver = webdriver.Chrome('/path/to/chromedriver') 

따라서 특정 경우 :

 driver = webdriver.Chrome("C:/Users/michael/Downloads/chromedriver_win32/chromedriver.exe")

3
"ChromeDriver 2.15.322448 시작"이 표시되었습니다. "로컬 연결 만 허용됩니다." 또한 나타났다. ...하지만 괜찮을 것 같아요? .... 궁금한 점은 다음과 같습니다. 웹 사이트에는 32 비트 버전의 chromedriver 만 사용할 수 있었지만 64 비트 창에서 제대로 작동해야합니까?
steady_progress

@steady_progress 그래, 괜찮아. 그리고 이것은 64 비트 Windows에서 작동합니다. 나는 그것을 직접 사용하고 있습니다. 아마도 셀레늄 버전이 문제를 일으킬 수 있다고 생각합니까? 어느 것을 설치 했습니까? ?를 사용하여 설치 했습니까 pip?
lmNt

답변에서 언급 한대로 웹 드라이버를 호출 할 때 드라이버의 직접 경로를 사용해 보셨습니까? 같은 오류로 실패 했습니까?
lmNt

4
PATH에 웹 드라이버를 추가 할 때 OS에 관계없이 웹 드라이버가 저장된 디렉토리 만 포함하고 실행 파일은 포함하지 마십시오. 예 : PATH = $ PATH : / path / to / webdriver / chromedriver가 아닌 PATH = $ PATH : / path / to / webdriver / 폴더 또한 PATH를 사용하면 위치가 webdriver.Chrome () 호출로 전달되는 것보다 훨씬 이식성이 뛰어납니다. 코드가 실행될 때마다 PATH가 올바르게 설정되어 있다고 가정 할 수 있지만 파일 구조가 동일하게 설정되었다고 가정 할 수는 없습니다. .
Aphid

2
동일한 솔루션을 사용하려고 시도했지만 다음 오류가 발생했습니다. WebDriverException : 메시지 : 'chromedriver.exe'실행 파일에 잘못된 권한이있을 수 있습니다. 참조하시기 바랍니다 sites.google.com/a/chromium.org/chromedriver/home
인 Yogesh

151

바이너리를 다운로드하고 경로를 수동으로 구성하여 chromedriver를 설정하는 기존 방법에 대한 토론이 여전히 진행되고 있음을 알 수 있습니다.

이것은 웹 드라이버 관리자를 사용하여 자동으로 수행 할 수 있습니다

pip install webdriver-manager

이제 질문의 위 코드는 아래의 변경으로 간단하게 작동합니다.

from selenium import webdriver
from webdriver_manager.chrome import ChromeDriverManager

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

Firefox, Edge 및 ie 바이너리를 설정하는데도 마찬가지입니다.


@Navarasu는 모든 사람이 왜 전류가 3.7 일 때 3.6에서 뭔가를 따라갈 것입니까? 다음 번에 그것은 3.6이라고 명시 적으로 말하는 것이 좋을 것입니다 .... 감사합니다
Azy Sır

5
이 최신 상태로 유지으로이 너무 굉장
레슬리 Alldridge

1
이 솔루션의 좋은 점은 특정 경로 설정을 기반으로 한 다른 솔루션보다 유연성이 뛰어나다는 것입니다. 여러 시스템에서 스크립트를 사용하는 측면에서는 비실용적입니다.
IBRAHIM

14

pycharm 커뮤니티 에디션과 동일한 상황이므로 cmd와 마찬가지로 경로 변수를 다시로드하려면 ide를 다시 시작해야합니다. 당신의 아이디어를 다시 시작하면 괜찮을 것입니다.


2
감사. Visual Studios에서 동일한 문제가있었습니다. 방금 IDE를 다시 시작하고 작동했습니다 :) 감사합니다
DollarAkshay

나를 위해 일했습니다.
CARTOS

13

Linux (Ubuntu 또는 Debian)에서 :

sudo apt install chromium-chromedriver

macOS에서 https://brew.sh/ 를 설치 한 다음

brew cask install chromedriver

다음을 사용하십시오 : driver = webdriver.Chrome ( '/ usr / lib / chromium-browser / chromedriver') .. $ PATH를 변경하지 않고
연금술

@ 연금술 당신이 그렇게해야합니까? 내가 기억할 때 driver = webdriver.Chrome()나를 위해 잘 일했다.
Boris

안녕하세요 보리스, 네, 왜 그런지 모르겠습니다. PATH에 추가 한 후에도 그것 없이는 작동하지 않았습니다. 경로를 올바르게 설정하는 것이 더 나을 것이라고 확신하지만 Chromedriver를 사용하여 한 가지 작업 만 신속하게 수행하면됩니다.
연금술

9

r원시 문자열의 경우 문자열 앞에 문자로 시작하는 경로 문자열을 추가해야 합니다. 나는이 방법으로 테스트했으며 작동합니다.

driver = webdriver.Chrome(r"C:/Users/michael/Downloads/chromedriver_win32/chromedriver.exe")

3

PATH env를 사용하여 땜질을 피하기 위해이 스레드의 향후 독자를위한 추가 입력 / 설명 Windows 수준에서 변수를 설정하고 Windows 시스템을 다시 시작하십시오 ( Chrome에 해당하는 https://stackoverflow.com/a/49851498/9083077의 답변 복사 ).

(1) 이전에이 스레드에서 설명한대로 chromedriver를 다운로드하고 압축이 풀린 chromedriver.exe를 X : \ Folder \ of \ your \ choice에 놓습니다.

(2) 파이썬 코드 샘플 :

import os;
os.environ["PATH"] += os.pathsep + r'X:\Folder\of\your\choice';

from selenium import webdriver;
browser = webdriver.Chrome();
browser.get('http://localhost:8000')
assert 'Django' in browser.title

참고 : (1) 샘플 코드 (참조 된 답변에서)가 지정된 URL에 대한 Firefox 브라우저를 여는 데 약 5 초가 걸릴 수 있습니다. (2) 지정된 URL에서 이미 실행중인 서버가 없거나 문자열 'Django'를 포함하는 제목을 가진 페이지를 제공하는 서버가 없으면 Python 콘솔에 다음 오류가 표시됩니다. assert 'Django'in browser.title AssertionError


3

Linux 및 OSX의 경우

1 단계 : Chromedriver 다운로드

# You can find more recent/older versions at http://chromedriver.storage.googleapis.com/
# Also make sure to pick the right driver, based on your Operating System
wget http://chromedriver.storage.googleapis.com/81.0.4044.69/chromedriver_mac64.zip

2 단계 :에 chromedriver 추가 /usr/local/bin

unzip chromedriver_mac64.zip
cp chromedriver /usr/local/bin

이제 달릴 수 있어야합니다

from selenium import webdriver

browser = webdriver.Chrome()
browser.get('http://localhost:8000')

문제없이


그가 Windows를 사용하고 있다고 분명히 말했으며, 이것은 Linux 용입니다.
misantroop

1
@misantroop 나는 이것을 명확히하기 위해 대답을 업데이트했습니다.
Giorgos Myrianthous

2

chromedriver의 압축을 풀 때 나중에 추적 할 수 있도록 정확한 위치를 지정하십시오. 아래에서 OS에 적합한 크롬 드라이버를 얻은 다음 정확한 위치로 압축을 풀고 나중에 코드에서 인수로 제공 할 수 있습니다.

wget http://chromedriver.storage.googleapis.com/2.10/chromedriver_linux64.zip unzip chromedriver_linux64.zip -d /home/virtualenv/python2.7.9/


3
또는 /usr/local/bin/전 세계적으로 설치하십시오.
Jeppe

2

로봇 프레임 워크 RIDE로 작업하는 경우. 그런 다음 Chromedriver.exe공식 웹 사이트에서 다운로드 하여이 .exe 파일을 C:\Python27\Scripts디렉토리에 보관할 수 있습니다 . 이제이 경로를 환경 변수로 언급하십시오. C:\Python27\Scripts\chromedriver.exe.

컴퓨터를 다시 시작하고 동일한 테스트 사례를 다시 실행하십시오. 이 문제는 다시 발생하지 않습니다.


2

지시 에 따르면 , 당신은 ChromeDriver의 경로를 포함 할 필요가있을 때 인스턴스화 webdriver.Chrome 예 :

driver = webdriver.Chrome('/path/to/chromedriver')

해당 지시 사항을 오른쪽으로 스크롤하면 "선택적 인수, 지정되지 않은 경우 경로를 검색합니다"라는 주석이 있습니다. 그러나 적어도 일부 버전의 웹 드라이버는 경로에서 찾은 chromedriver를 확인하는 것으로 보이며 그것이 행복하지 않으면 (잘못된 버전 등) 사용하지 않습니다 (이 매개 변수를 설정하여 강제로 시도하지 않는 한). 더 나은 버전을 찾기 위해 계속 경로를 찾은 다음 찾을 수 없으면 불평합니다. ( "크롬 드라이버를 찾을 수 없음"보다 "크롬 드라이버를 찾지 못했습니다"라는 메시지가 더 좋을 것입니다.)
Silas S. Brown

2

chromedriver를 경로에 추가하기 전에 브라우저와 동일한 버전인지 확인하십시오.

그렇지 않은 경우 크롬 업데이트 / 다운 그레이드 및 웹 드라이버 업그레이드 / 다운 그레이드 버전과 일치해야합니다.

크롬 버전을 최대한 업데이트하고 웹 드라이버를 일치시키는 것이 좋습니다.

크롬을 업데이트하려면

  • 오른쪽 상단에서 세 개의 점을 클릭하십시오.
  • 클릭 help->About Google Chrome
  • 버전을 업데이트하고 크롬을 다시 시작하십시오.

그런 다음 http://chromedriver.chromium.org/downloads 에서 호환되는 버전을 다운로드 하십시오 .

참고 : 최신 Chromedriver가 항상 최신 Chrome 버전과 일치하지는 않습니다.

이제 PATH에 추가 할 수 있습니다 :

  1. 컴퓨터 어딘가에 웹 폴더를 배치 할 새 폴더를 만듭니다. 나는라는 폴더 생성 webdrivers에를C:\Program Files

  2. 폴더 경로를 복사하십시오. 내 경우에는C:\Program Files\webdrivers

  3. 마우스 오른쪽 버튼으로 클릭 this PC-> properties:

여기에 이미지 설명을 입력하십시오

  1. 오른쪽 클릭 Advanced System settings
  2. 딸깍 하는 소리 Environment Variables
  3. 에서 System variables를 클릭하십시오path 하고edit
  4. 딸깍 하는 소리 new
  5. 복사 한 경로를 붙여 넣기
  6. 모든 창에서 확인을 클릭하십시오

그게 다야! 나는 pycharm을 사용했고 그것을 다시 열어야했습니다. 다른 IDE 또는 터미널과 동일 할 수도 있습니다.


1

PATH가 올바르게 설정되어 있는지 확인한 후 컴퓨터가 작동하지 않으면 컴퓨터를 다시 시작할 수 있습니다.

Windows 7의 경우 항상 WebDriverException : 메시지 : chromedriver, gecodriver, IEDriverServer에 대한 오류가 발생했습니다. 나는 올바른 경로를 가지고 있다고 확신합니다. 컴퓨터를 다시 시작하십시오. 모든 작업


1

가장 좋은 방법은 다음과 같습니다.

chromedriver를 다운로드하고 압축을 풀고 C : \ Python27 \ Scripts에 'chromedriver.exe'를 넣으면 드라이버 경로를 제공 할 필요가 없습니다.

driver= webdriver.Chrome()

경로 나 다른 것을 추가 할 필요가 없습니다


0

내 경우에는 chromedriver 파일을 c : \ Windows 폴더로 복사하면이 오류가 사라집니다. Windows 디렉토리가 python 스크립트가 chromedriver 가용성을 확인하는 경로에 있기 때문입니다.


0

원격 인터프리터를 사용하는 경우 실행 가능한 PATH가 정의되어 있는지 확인해야합니다. 필자의 경우 원격 Docker 인터프리터에서 로컬 인터프리터로 전환하면 문제가 해결되었습니다.


0

나는 당신과 같은 문제가 발생했습니다. PyCharm을 사용하여 프로그램을 작성하고 있는데 문제는 OS가 아닌 PyCharm의 환경 설정에 있다고 생각합니다. 스크립트 구성으로 이동 한 다음 환경 변수에서 PATH를 수동으로 편집하여 문제를 해결했습니다. 도움이 되길 바랍니다.


또 다른 옵션은 chromedriver를 / usr / local / bin으로 직접 옮기는 것입니다. 그러면 경로를 전혀 추가하지 않아도됩니다.
sia1998


0

가장 좋은 방법은 현재 디렉토리를 가져 와서 나머지 주소를 추가하는 것입니다. 이 코드와 같이 (Windows의 단어. Linux에서는 pwd 줄을 사용할 수 있습니다) : webdriveraddress = str(os.popen("cd").read().replace("\n", ''))+'\path\to\webdriver'


0

chromedriver.exe를 다운로드했을 때 PATH 폴더 C : \ Windows \ System32 \ chromedriver.exe로 옮기면 정확히 같은 문제가있었습니다.

나에게 해결책은 PATH의 폴더를 변경하는 것이므로 PATH에있는 Pycharm Community bin 폴더로 옮겼습니다. 전의:

  • C : \ Windows \ System32 \ chromedriver.exe-> 예외를주었습니다.
  • C : \ Program Files \ JetBrains \ PyCharm Community Edition 2019.1.3 \ bin \ chromedriver.exe-> 제대로 작동

0

로봇 테스트 프레임 워크 및 Chrome 77을 실행하는 Mac Mojave에서이 문제가 발생했습니다. 문제가 해결되었습니다. 올바른 길을 알려준 @Navarasu 님.

$ pip install webdriver-manager --user # install webdriver-manager lib for python
$ python # open python prompt

다음으로, 파이썬 프롬프트에서 :

from selenium import webdriver
from webdriver_manager.chrome import ChromeDriverManager
driver = webdriver.Chrome(ChromeDriverManager().install())

# ctrl+d to exit

다음과 같은 오류가 발생합니다.

Checking for mac64 chromedriver:xx.x.xxxx.xx in cache
There is no cached driver. Downloading new one...
Trying to download new driver from http://chromedriver.storage.googleapis.com/xx.x.xxxx.xx/chromedriver_mac64.zip
...
TypeError: makedirs() got an unexpected keyword argument 'exist_ok'
  • 이제 최신 다운로드 링크를 받았습니다
    • chromedriver를 원하는 위치에 다운로드하여 압축을 풉니 다
    • 예를 들면 다음과 같습니다. ~/chromedriver/chromedriver

~/.bash_profile편집기로 열고 다음 을 추가하십시오.

export PATH="$HOME/chromedriver:$PATH"

새 터미널 창 열기, ta-da 🎉


0

Webdriver 3.8.0 (Chrome 73.0.3683.103 및 ChromeDriver 73.0.3683.68)에서이 문제가 발생했습니다. 내가 한 후에 문제가 사라졌다

pip install -U selenium

Webdriver를 3.14.1로 업그레이드합니다.


0

크롬 드라이버의 경로를 확인하십시오. 드라이버 위치를 코드에 붙여 넣기 만하면됩니다.


-3

(Mac 사용자의 경우) 동일한 문제가 있지만이 간단한 방법으로 해결했습니다. chromedriver.exe를 실행 된 스크립트와 동일한 폴더에 넣고 pyhton 보다이 지침을 작성해야합니다.

수입 OS

os.environ [ "PATH"] + = os.pathsep + r'X : / your / folder / script / '


2
제안하는 솔루션은 다른 사용자의 솔루션과 동일합니다. 게시하기 전에 다른 답변에주의하십시오.
Nikita Kniazev

@walid_data가 Windows 전용 문제 일 수 있다고 지적하지 않습니까?
benc
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.