Python을 사용한 Selenium-Geckodriver 실행 파일이 PATH에 있어야합니다.


435

저는 프로그래밍을 처음 Python접 했고 약 2 개월 전에 시작 했으며 Sweigart의 Python 텍스트로 지루한 물건 자동화 를 다루고 있습니다. 유휴를 사용하고 있으며 셀레늄 모듈과 Firefox 브라우저를 이미 설치했습니다. 웹 드라이버 기능을 실행하려고 할 때마다 다음과 같은 결과가 나타납니다.

from selenium import webdriver
browser = webdriver.Firefox()

예외 :-

Exception ignored in: <bound method Service.__del__ of <selenium.webdriver.firefox.service.Service object at 0x00000249C0DA1080>>
Traceback (most recent call last):
  File "C:\Python\Python35\lib\site-packages\selenium\webdriver\common\service.py", line 163, in __del__
    self.stop()
  File "C:\Python\Python35\lib\site-packages\selenium\webdriver\common\service.py", line 135, in stop
    if self.process is None:
AttributeError: 'Service' object has no attribute 'process'
Exception ignored in: <bound method Service.__del__ of <selenium.webdriver.firefox.service.Service object at 0x00000249C0E08128>>
Traceback (most recent call last):
  File "C:\Python\Python35\lib\site-packages\selenium\webdriver\common\service.py", line 163, in __del__
    self.stop()
  File "C:\Python\Python35\lib\site-packages\selenium\webdriver\common\service.py", line 135, in stop
    if self.process is None:
AttributeError: 'Service' object has no attribute 'process'
Traceback (most recent call last):
  File "C:\Python\Python35\lib\site-packages\selenium\webdriver\common\service.py", line 64, in start
    stdout=self.log_file, stderr=self.log_file)
  File "C:\Python\Python35\lib\subprocess.py", line 947, in __init__
    restore_signals, start_new_session)
  File "C:\Python\Python35\lib\subprocess.py", line 1224, in _execute_child
    startupinfo)
FileNotFoundError: [WinError 2] The system cannot find the file specified

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
  File "<pyshell#11>", line 1, in <module>
    browser = webdriver.Firefox()
  File "C:\Python\Python35\lib\site-packages\selenium\webdriver\firefox\webdriver.py", line 135, in __init__
    self.service.start()
  File "C:\Python\Python35\lib\site-packages\selenium\webdriver\common\service.py", line 71, in start
    os.path.basename(self.path), self.start_error_message)
selenium.common.exceptions.WebDriverException: Message: 'geckodriver' executable needs to be in PATH. 

나는 경로를 설정해야 geckodriver하지만 어떻게 해야할지 잘 모르겠다 고 생각합니다.


2
비슷한 질문에 대한 나의 대답을 여기서보십시오
Andrew

geckodriver.exe를 Python / Python35 디렉토리에 넣고 경로가 같고 더 많은 문제가 발생합니다.
tadm123

80
Mac :brew install geckodriver
Nostalg.io

1
Chrome 브라우저를 통해 실행하는 것이 Firefox보다 약간 빠르다는 것을 알았습니다 chromedriver. 다운로드하려면 다운로드해야 합니다.
tadm123

참고 : 최근 오픈 소스 인 Testcafe 가 있습니다. 브라우저 플러그인이 필요하지 않으며 내장되어 있습니다. 나는 Selenium을 사용하고 싶었지만 흥미로운 대안처럼 보입니다.
Ehvince

답변:


355

selenium.common.exceptions.WebDriverException : 메시지 : 'geckodriver'실행 파일이 PATH에 있어야합니다.

우선 셀레늄을 사용하여 최신 파이어 폭스를 실행하려면 여기에서 최신 실행 가능 geckodriver를 다운로드해야합니다

실제로 Selenium 클라이언트 바인딩 geckodriver은 시스템 에서 실행 파일 을 찾으려고합니다 PATH. 실행 파일이 들어있는 디렉토리를 시스템 경로에 추가해야합니다.

  • 유닉스 시스템에서는 bash 호환 쉘을 사용하는 경우 다음을 수행하여 시스템의 검색 경로에 추가 할 수 있습니다.

    export PATH=$PATH:/path/to/directory/of/executable/downloaded/in/previous/step
  • Windows에서는 경로 시스템 변수 를 업데이트하여 실행 가능 geckodriver 또는 명령 행에 전체 디렉토리 경로를 수동으로 추가해야합니다 (실행 가능 geckodriver를 시스템 PATH에 추가 한 후 시스템을 다시 시작해야합니다) . 원칙은 Unix와 동일합니다.

이제 아래와 같이 코드를 실행할 수 있습니다 :-

from selenium import webdriver

browser = webdriver.Firefox()

selenium.common.exceptions.WebDriverException : 메시지 : 브라우저 바이너리 위치가 예상되었지만 기본 위치에서 바이너리를 찾을 수 없으며 'moz : firefoxOptions.binary'기능이 제공되지 않으며 명령 행에 바이너리 플래그가 설정되지 않았습니다.

예외는 Selenium이 파이어 폭스를 찾고 기본 위치에서 실행하려고하지만 찾을 수없는 동안 다른 위치에 파이어 폭스를 설치했다고 명시합니다. 다음과 같이 파이어 폭스를 시작하려면 명시 적으로 파이어 폭스 설치 바이너리 위치를 제공해야합니다.

from selenium import webdriver
from selenium.webdriver.firefox.firefox_binary import FirefoxBinary

binary = FirefoxBinary('path/to/installed firefox binary')
browser = webdriver.Firefox(firefox_binary=binary)

8
고맙지 만 디렉토리에 my geckodriver.exeC:\Python\Python35\selenium설정하고 설명대로 경로를 설정했지만 아래 오류가 발생합니다.
tadm123

4
감사합니다 @Saurabh Gaur, 지금 작동합니다. Firefox의 경로를 시스템 변수에 수동으로 추가했으며 모두 작동합니다. 시작하는 데 약간의 시간이 걸리지 만 정상적인 것 같습니다. 감사!
tadm123

3
firefox 이진 경로 지정을 시작했지만 컴퓨터를 다시 시작하면 (Windows 10) 오류가 발생했습니다. "WebDriverException : 메시지 : 브라우저를 시작하지 못했습니다 : 권한이 거부되었습니다." -다른 사람이 나와 같은 문제를 겪을 경우를 대비하여.
NoSuchElephantException

3
바이너리는 무엇입니까? 이것이 실행 파일을 의미합니까?
사용자

12
이 답변 외에도 PATH유닉스 환경 에서 설정을 확장하고 싶습니다 . 시스템 전체가 필요하지 않으므로 코드로 설정할 수 있습니다. os.environ["PATH"] += os.pathsep + 'path/to/dir/containing/geckodriver/' 또는 이미 경로에있는 디렉토리에 geckodriver 바이너리를 유지하십시오.mv geckodriver /usr/local/bin
dsalaj
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.