Seleniu folosind Python - Geckodriver executabil trebuie să fie în CALEA

Am'm noi de programare și a început cu "Pitonul" aproximativ 2 luni în urmă și am de gând peste Sweigart's a Automatiza Lucruri Plictisitoare cu Python text. Am'm folosind INACTIV și instalat deja seleniu module și browser-ul Firefox. Ori de câte ori am încercat pentru a rula webdriver funcție, am primit asta:

from selenium import webdriver
browser = webdriver.Firefox()

Excepție :-

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. 

Cred că am nevoie pentru a seta calea pentru geckodriver`, dar nu sunt sigur cum, deci, poate cineva spune-mi cum aș putea face asta?

Comentarii la întrebare (6)
Soluția

seleniu.comune.excepții.WebDriverException: Mesaj: 'geckodriver' executabil trebuie să fie în CALE.

Mai întâi de toate, va trebui să descărcați cea mai recentă executabil geckodriver de aici de a rula cele mai recente firefox folosind seleniu

De fapt Seleniu client legături încearcă să localizeze geckodriver executabile din sistem "CALE". Va trebui să adăugați directorul care conține executabile pentru sistemul calea.

  • Pe sistemele Unix puteți face următoarele pentru a adăuga pe sistem e calea de căutare, dacă utilizați un bash-compatibil shell:

export PATH=$PATH:/path/to/director/de/executabil/descarcat/în/anterior/pas

  • Pe Windows, veți avea nevoie pentru a actualiza Calea variabila de sistem pentru a adăuga directorul plin calea spre executabil geckodriver manually sau command line(nu't uitați să reporniți sistemul după adăugarea executabil geckodriver în sistemul CALE pentru a avea efect). Principiul este acelasi ca pe Unix.

Acum, puteți rula codul fel ca're face ca mai jos :-

from selenium import webdriver

browser = webdriver.Firefox()

seleniu.comune.excepții.WebDriverException: Mesaj: Temperatura browser-ul binar locație, dar în imposibilitatea de a găsi binar în locația implicită, nu 'moz:firefoxOptions.binar' capacitatea de oferit, și nu binar pavilion amplasat pe linia de comandă

Excepție clar ai instalat firefox o altă locație, în timp ce Seleniul este încercarea de a găsi firefox și lansarea de default location dar n't găsi. Aveți nevoie pentru a oferi în mod explicit firefox instalat binar locație pentru lansarea firefox ca mai jos :-

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)
Comentarii (14)

Asta a rezolvat-o pentru mine.

from selenium import webdriver
driver = webdriver.Firefox(executable_path=r'your\path\geckodriver.exe')
driver.get('http://inventwithpython.com')
Comentarii (15)

acest pașii REZOLVATE pentru mine pe ubuntu firefox 50.

  1. Download geckodriver

  2. Copia geckodriver în /usr/local/bin

NU aveți nevoie pentru a adăuga

firefox_capabilities = DesiredCapabilities.FIREFOX
firefox_capabilities['marionette'] = True
firefox_capabilities['binary'] = '/usr/bin/firefox'
browser = webdriver.Firefox(capabilities=firefox_capabilities)
Comentarii (6)

Răspunsul de @saurabh rezolvă problema, dar nu't explica de ce a Automatiza Lucruri Plictisitoare cu Python nu - 't să includă aceste măsuri.

Acest lucru este cauzat ca la carte pe baza de seleniu 2.x și Firefox driver pentru care seria nu are nevoie de gecko driver. Gecko interfață pentru a conduce browser-ul nu a fost disponibil atunci când seleniu a fost în curs de dezvoltare.

De ultima versiune în seleniu 2.seria x este 2.53.6 (a se vedea e.g răspunde, pentru o vizualizare mai ușor de versiuni).

De 2.53.6 versiune pagina nu't mai vorbim gecko, la toate. Dar de la versiunea 3.0.2 documentația în mod explicit trebuie să instalați gecko driver.

Dacă după un upgrade (sau să instalați pe un sistem nou), software-ul care a lucrat bine înainte de (sau pe vechiul sistem) nu't mai funcționează și sunteți într-o grabă, pin seleniu versiunea în virtualenv de a face

pip install selenium==2.53.6

dar, desigur, soluția pe termen lung pentru dezvoltare este de a seta un nou virtualenv cu cea mai recentă versiune de seleniu, instalați gecko șofer și a testa dacă totul funcționează cum era de așteptat. Dar versiune majoră cucui s-ar putea introduce și alte modificări API care nu sunt acoperite de cartea ta, așa că poate doriți să rămânem cu mai vechi, seleniu, până când sunt suficient de încrezători că puteți rezolva orice discrepanțe între selenium2 și selenium3 API-te.

Comentarii (1)

Pe macOS cu Homebrew deja instalat, puteți rula pur și simplu Terminal comanda

$ brew install geckodriver

Pentru homebrew făcut-o deja extinde "CALE" nu's nu este nevoie de a modifica orice script-uri de pornire.

Comentarii (1)

Pentru a configura geckodriver pentru Seleniu Python:

Trebuie să setați geckodriver calea cu FirefoxDriver fel de cod de mai jos:

self.driver = webdriver.Firefox(executable_path = 'D:\Selenium_RiponAlWasim\geckodriver-v0.18.0-win64\geckodriver.exe')

Descărcați geckodriver potrivit pentru sistemul de OPERARE (de la https://github.com/mozilla/geckodriver/releases) -> Extrage-l într-un dosar de alegerea ta -> Setați calea corect așa cum am menționat mai sus

Am'm folosind Python 3.6.2 și Selenium WebDriver 3.4.3 în Windows 10.

Un alt mod de a configura geckodriver:

i) să lipiți pur și Simplu geckodriver.exe sub /Python/Scripts/ (In cazul meu dosarul a fost: C:\Python36\Scripts)
ii) Acum scrie cod simplu ca mai jos:

self.driver = webdriver.Firefox()
Comentarii (0)

Dacă utilizați Anaconda, tot ce trebuie să faceți este să activați mediul virtual și apoi instalați geckodriver folosind următoarele comanda:

    conda install -c conda-forge geckodriver
Comentarii (3)

Pașii pentru MAC:

Soluția simplă este de a descărca GeckoDriver și adăugați-l la sistemul de CALE. Puteți utiliza oricare dintre cele două abordări:

Scurt Metoda:

  1. Descărcați și dezarhivați Geckodriver.

  2. Menționează calea în timp ce inițierea driver:

driver = webdriver.Firefox(executable_path='/your/path/to/geckodriver')

Metoda de Lung:

  1. Descărcați și dezarhivați Geckodriver.

  2. a Deschide.bash_profile. Dacă te-ai&#39;t creat-o încă, puteți face acest lucru folosind comanda: "atinge"~/.bash_profile. Apoi deschideți-l cu ajutorul: deschide ~/.bash_profile

  3. având în Vedere GeckoDriver fișier este prezent în folderul Descărcări, puteți să adăugați următoarea linie(s) la .bash_profile fișier:

PATH="/Users//Downloads/geckodriver:$PATH"
export PATH

De acest lucru sunt anexate calea GeckoDriver pentru Sistemul dvs. CALE. Acest lucru spune de sistem în cazul în care GeckoDriver este situat la executarea ta script-uri de Seleniu.

  1. Salva `.bash_profile și forța pentru a executa. Aceasta încarcă valorile imediat, fără a fi nevoie pentru a reporni. Pentru a face acest lucru aveți posibilitatea să executați următoarea comandă:

source ~/.bash_profile

  1. Care's a. Ați TERMINAT!. Puteți rula script Python acum.
Comentarii (1)

Ubuntu 18.04+ și mai Nou versiune de geckodriver

Acest lucru ar trebui să funcționeze, de asemenea, pentru alte *nix soiuri, precum și.

export GV=v0.26.0
wget "https://github.com/mozilla/geckodriver/releases/download/$GV/geckodriver-$GV-linux64.tar.gz"
tar xvzf geckodriver-$GV-linux64.tar.gz 
chmod +x geckodriver
sudo cp geckodriver /usr/local/bin/

Pentru mac update la:

geckodriver-$GV-macos.tar.gz

Comentarii (0)

Cel mai simplu mod pentru windows! Descărcați ultima versiune de geckodriver` de aici. Adaugă geckodriver.exe file de piton director (sau orice alt director, care deja în "CALE"). Acest lucru ar trebui să rezolve problema (Testat pe Windows 10)

Comentarii (1)

Unele suplimentare de intrare/clarificare pentru viitor cititorii acestui thread:

Următoarele este de ajuns ca o rezoluție pentru Windows 7, Python 3.6, seleniu 3.11:

@dsalaj's notă în acest thread mai devreme pentru Unix se aplică la Windows la fel de bine; tinkering cu CALEA env. variabilă la nivelul Ferestrelor și a reporni sistemul de operare Windows pot fi evitate.

(1) Descărcați geckodriver (așa cum este descris în acest thread mai devreme) și locul (dezarhivat) geckdriver.exe la X:\Folder\of\your\choice

(2) cod Python eșantion:

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

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

Note: (1) poate dura aproximativ 10 secunde pentru codul de mai sus pentru a deschide browser-ul Firefox pentru url-ul specificat. (2) În consola python ar arăta următorul mesaj de eroare dacă nu's nici un server care rulează deja la url-ul specificat sau care deservesc o pagină cu titlul conțin șirul 'Django': seleniu.comune.excepții.WebDriverException: Mesaj: Ajuns la pagina de eroare: about:neterror?e=connectionFailure&u=http%3A//localhost%3A8000/&c=UTF-8&f=regular&d=Firefox%20can%E2%80%9

Comentarii (1)

Am'am descoperit de fapt puteți utiliza cea mai recentă geckodriver cu punerea în sistemul calea. În prezent, am'm, folosind

https://github.com/mozilla/geckodriver/releases/download/v0.12.0/geckodriver-v0.12.0-win64.zip

Firefox 50.1.0

Python 3.5.2

Seleniu 3.0.2

Windows 10

Am'm execută o VirtualEnv (pe care am gestiona folosind PyCharm, presupun ca foloseste Pip pentru a instala totul)

În codul de mai jos pot folosi o cale specifică pentru geckodriver folosind executable_path paramater (I discoverd asta de a avea o privire în Lib\site-packages\selenium\webdriver\firefox\webdriver.py ). Notă am o bănuială că ordinea de parametrul argumente atunci când de asteptare webdriver este important, motiv pentru care executable_path este trecută în codul meu (2 ultima linie de pe la extrema dreapta)

Puteți observa, de asemenea, eu folosesc un custom firefox Profil pentru a obține în jurul valorii de sec_error_unknown_issuer problemă care va rula în cazul în care site-ul tine're de testare are un certificat. vezi https://stackoverflow.com/questions/16879566/how-to-disable-firefoxs-untrusted-connection-warning-using-selenium

După investigații s-a constatat că Marionete driver este incompletă și încă în curs de desfășurare, și nici o cantitate de stabilire a diferitelor capacități sau opțiuni de profil pentru demiterea sau setarea certifcates fost de gând să lucreze. Așa a fost mai ușor pentru a utiliza un profil personalizat.

Oricum aici's codului cu privire la modul în care am primit geckodriver să lucreze fără a fi în cale:

from selenium import webdriver
from selenium.webdriver.common.desired_capabilities import DesiredCapabilities

firefox_capabilities = DesiredCapabilities.FIREFOX
firefox_capabilities['marionette'] = True

#you probably don't need the next 3 lines they don't seem to work anyway
firefox_capabilities['handleAlerts'] = True
firefox_capabilities['acceptSslCerts'] = True
firefox_capabilities['acceptInsecureCerts'] = True

#In the next line I'm using a specific FireFox profile because
# I wanted to get around the sec_error_unknown_issuer problems with the new Firefox and Marionette driver
# I create a FireFox profile where I had already made an exception for the site I'm testing
# see https://support.mozilla.org/en-US/kb/profile-manager-create-and-remove-firefox-profiles#w_starting-the-profile-manager

ffProfilePath = 'D:\Work\PyTestFramework\FirefoxSeleniumProfile'
profile = webdriver.FirefoxProfile(profile_directory=ffProfilePath)
geckoPath = 'D:\Work\PyTestFramework\geckodriver.exe'
browser = webdriver.Firefox(firefox_profile=profile, capabilities=firefox_capabilities, executable_path=geckoPath)
browser.get('http://stackoverflow.com')
Comentarii (1)

Am'm folosind Windows 10 și aceasta a lucrat pentru mine:

  1. Descărcați geckodriver de aici . Descărcați versiunea corectă pentru computerul pe care îl utilizați
  2. Dezarhivați fișierul descărcat și cut/copy ".exe" fișier conține
  3. Navigați la C:{python folderul rădăcină}. Al meu a fost C:\Python27. Inserați geckodriver.exe fișiere în acest dosar.
  4. Reporniți mediu de dezvoltare.
  5. Încercați să rulați din nou codul, ar trebui să funcționeze acum.
Comentarii (1)

Seleniu răspunde la această întrebare în DESCRIEREA lor.prima

Drivers
=======

Selenium requires a driver to interface with the chosen browser. Firefox,
for example, requires `geckodriver `_, which needs to be installed before the below examples can be run. Make sure it's in your `PATH`, e. g., place it in `/usr/bin` or `/usr/local/bin`.

Failure to observe this step will give you an error `selenium.common.exceptions.WebDriverException: Message: 'geckodriver' executable needs to be in PATH.

Practic, trebuie doar să descărcați geckodriver, despachetați-l și pentru a muta executabil la /usr/bin folder

Comentarii (1)

L's într-adevăr destul de trist că niciuna dintre cărțile publicate pe Seleniu/Python și cele mai multe comentarii pe această temă, prin intermediul Google nu explica în mod clar pathing logica pentru a stabili acest lucru pe Mac (totul este Windows!!!!). Youtubes toate preluare, la "dupa" te'am pathing setup (în mintea mea, ieftină cale de ieșire!). Deci, pentru tine minunat utilizatorii de Mac, utilizați următoarele opțiuni pentru a edita bash calea fișiere:

>$atingeți ~/.bash_profile; deschide ~/.bash_profile

Apoi se adaugă o cale ceva de genul asta.... *# CALE setare pentru geckodriver PATH="/usr/bin/geckodriver:${PATH}" CALEA de export

Setarea CALEA pentru Seleniu firefox

PATH="~/Users/yourNamePATH/VEnvPythonInterpreter/lib/python2.7/site-packages/selenium/webdriver/firefox/:${PATH}" CALEA de export

Setarea CALEA pentru executabil pe firefox driver

PATH="/Users/yournamePATH/VEnvPythonInterpreter/lib/python2.7/site-packages/selenium/webdriver/common/service.py:${PATH}" CALEA de export*

Aceasta a lucrat pentru mine. Preocuparea mea este când va Seleniu Windows comunitate începe să joci jocul real și includ noi utilizatorii de Mac în arogant membru al clubului.

Comentarii (0)

Pentru utilizatorii de windows

utilizați codul original ca's:

from selenium import webdriver
browser = webdriver.Firefox()
driver.get("https://www.google.com")

apoi, descărcați driverul de: mozilla/geckodriver

Puneți-l într-o cale fix (permanent).. ca un exemplu, am pus-o în:

C:\Python35

Apoi du-te la variabilele de mediu ale sistemului, în grila de "variabile de Sistem" uita-te pentru Calea variabilă și se adaugă:

;C:\Python35\geckodriver

geckodriver, nu geckodriver.exe.

Comentarii (2)

Vizita Gecko Driver a se obține url-ul pentru gecko driver de la secțiunea Descărcări.

Clona acest repo https://github.com/jackton1/script_install.git

cd script_install

Rula

./installer --gecko-driver https://github.com/mozilla/geckodriver/releases/download/v0.18.0/geckodriver-v0.25.0-linux64.tar.gz
Comentarii (0)

Pe Raspberry Pi am avut de a crea de la BRAȚUL șoferului și a stabilit geckodriver și log calea în:

sudo nano /usr/local/lib/python2.7/dist-packages/selenium/webdriver/firefox/webdriver.py

def __init__(self, firefox_profile=None, firefox_binary=None,
             timeout=30, capabilities=None, proxy=None,
             executable_path="/PATH/gecko/geckodriver",                     
firefox_options=None,
             log_path="/PATH/geckodriver.log"):
Comentarii (0)

Am văzut discuții încă vorbesc despre vechiul mod de a înființa geckodriver prin descărcarea binare și configurarea manual calea.

Acest lucru poate fi realizat în mod automat folosind webdriver-manager

pip install webdriver-manager

Acum codul de mai sus în cauză va lucra, pur și simplu, cu partea de jos a schimba,

from selenium import webdriver
from webdriver_manager.firefox import GeckoDriverManager

driver = webdriver.Firefox(executable_path=GeckoDriverManager().install())
Comentarii (0)

Dacă doriți să adăugați căi de driver pe windows 10:

  1. Click dreapta pe "Acest PC" pictogramă și selectați "Proprietăți"

  2. Faceți clic pe "Setări Avansate de Sistem"

  3. Faceți clic pe "Variabile de Mediu" în partea de jos a ecranului

  4. În "Variabilele de Utilizator în secțiunea" highlight "Calea" și faceți clic pe "Edit"

  5. Adaugă căi pentru variabilele făcând clic pe "Nou" și tastarea în cale pentru șofer ești adăugarea și a lovi enter.

  6. Odată ce ați terminat de introdus în calea, faceți clic pe "OK"

  7. Să păstreze făcând clic pe "OK" până când ați închis toate ecranele

Comentarii (0)