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

저는 프로그래밍을 처음 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하지만 어떻게 해야할지 잘 모르겠다 고 생각합니다.



답변

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)


답변