프로그래밍 언어/Python

Python 셀레니움 - Geckodriver executable needs to be in PATH.

Rateye 2022. 3. 29. 13:32
728x90
반응형
질문 : Python을 사용하는 Selenium-Geckodriver 실행 파일이 PATH에 있어야합니다.

저는 프로그래밍을 처음 접했고 약 2 개월 전에 Python으로 시작했으며 Sweigart의 Automate the Boring Stuff with Python 텍스트를 살펴 보겠습니다. IDLE을 사용하고 있으며 이미 Selenium 모듈과 Firefox 브라우저를 설치했습니다.

webdriver 기능을 실행하려고 할 때마다 다음과 같은 메시지가 표시됩니다.

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

geckodriver 의 경로를 설정해야한다고 생각하지만 어떻게해야할지 모르겠습니다. 어떻게해야합니까?

답변

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

먼저 Selenium을 사용하여 최신 Firefox를 실행하려면 여기에서 최신 실행 가능한 geckodriver를 다운로드해야합니다.

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

  • Unix 시스템에서는 Bash 호환 쉘을 사용하는 경우 다음을 수행하여 시스템의 검색 경로에 추가 할 수 있습니다.
     export PATH=$PATH:/path/to/directory/of/executable/downloaded/in/previous/step
  • Windows에서는 Path 시스템 변수를 업데이트하여 실행 가능한 geckodriver에 수동으로 전체 디렉토리 경로를 추가 하거나 명령 줄 ** (적용하려면 시스템 PATH에 실행 가능한 geckodriver를 추가 한 후 시스템을 다시 시작하는 것을 잊지 마십시오) **. 원칙은 Unix와 동일합니다.

 

 

이제 다음과 같이 코드를 실행할 수 있습니다.

from selenium import webdriver

browser = webdriver.Firefox()

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

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

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)

https://github.com/mozilla/geckodriver/releases

Windows의 경우 :

GitHub에서 파일을 다운로드하고 압축을 풀고 Python 파일에 붙여 넣습니다. 그것은 나를 위해 일했습니다.

https://github.com/mozilla/geckodriver/releases

나를 위해 내 경로 경로는 다음과 같습니다.

C:\Users\MYUSERNAME\AppData\Local\Programs\Python\Python39
출처 : https://stackoverflow.com/questions/40208051/selenium-using-python-geckodriver-executable-needs-to-be-in-path
728x90
반응형