Mai mult
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?
380
24
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.export PATH=$PATH:/path/to/director/de/executabil/descarcat/în/anterior/pas
Acum, puteți rula codul fel ca're face ca mai jos :-
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 :-
Asta a rezolvat-o pentru mine.
acest pașii REZOLVATE pentru mine pe ubuntu firefox 50.
Download geckodriver
Copia geckodriver în /usr/local/bin
NU aveți nevoie pentru a adăuga
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
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.
Pe macOS cu Homebrew deja instalat, puteți rula pur și simplu Terminal comanda
Pentru homebrew făcut-o deja extinde "CALE" nu's nu este nevoie de a modifica orice script-uri de pornire.
Pentru a configura geckodriver pentru Seleniu Python:
Trebuie să setați geckodriver calea cu FirefoxDriver fel de cod de mai jos:
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:
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:
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:
Descărcați și dezarhivați Geckodriver.
Menționează calea în timp ce inițierea driver:
Metoda de Lung:
Descărcați și dezarhivați Geckodriver.
a Deschide.bash_profile
. Dacă te-ai't creat-o încă, puteți face acest lucru folosind comanda: "atinge"~/.bash_profile
. Apoi deschideți-l cu ajutorul:deschide ~/.bash_profile
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: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.
source ~/.bash_profile
Ubuntu 18.04+ și mai Nou versiune de geckodriver
Acest lucru ar trebui să funcționeze, de asemenea, pentru alte *nix soiuri, precum și.
Pentru mac update la:
geckodriver-$GV-macos.tar.gz
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)
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:
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
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:
Am'm folosind Windows 10 și aceasta a lucrat pentru mine:
Seleniu răspunde la această întrebare în DESCRIEREA lor.prima
Practic, trebuie doar să descărcați geckodriver, despachetați-l și pentru a muta executabil la /usr/bin folder
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.
utilizați codul original ca's:
apoi, descărcați driverul de: mozilla/geckodriver
Puneți-l într-o cale fix (permanent).. ca un exemplu, am pus-o în:
Apoi du-te la variabilele de mediu ale sistemului, în grila de "variabile de Sistem" uita-te pentru Calea variabilă și se adaugă:
geckodriver, nu geckodriver.exe.
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
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
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
Acum codul de mai sus în cauză va lucra, pur și simplu, cu partea de jos a schimba,
Dacă doriți să adăugați căi de driver pe windows 10:
Click dreapta pe "Acest PC" pictogramă și selectați "Proprietăți"
Faceți clic pe "Setări Avansate de Sistem"
Faceți clic pe "Variabile de Mediu" în partea de jos a ecranului
În "Variabilele de Utilizator în secțiunea" highlight "Calea" și faceți clic pe "Edit"
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.
Odată ce ați terminat de introdus în calea, faceți clic pe "OK"
Să păstreze făcând clic pe "OK" până când ați închis toate ecranele