Selenium menggunakan Python - Geckodriver yang dapat dieksekusi harus dalam PATH

435

Saya baru Pythonmengenal pemrograman dan mulai sekitar 2 bulan yang lalu dan saya mempelajari Sweigart's Automate the Boring Stuff dengan Python text. Saya menggunakan IDLE dan sudah menginstal modul selenium dan browser Firefox. Setiap kali saya mencoba menjalankan fungsi webdriver, saya mendapatkan ini:

from selenium import webdriver
browser = webdriver.Firefox()

Pengecualian: -

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. 

Saya pikir saya perlu menetapkan jalur untuk geckodrivertetapi tidak yakin bagaimana, jadi adakah yang bisa memberitahu saya bagaimana saya melakukan ini?

tadm123
sumber
2
Tolong, lihat jawaban saya pada pertanyaan serupa di sini
Andrew
Saya meletakkan geckodriver.exe di direktori Python / Python35 sehingga memiliki jalur yang sama dan saya mendapatkan lebih banyak masalah.
tadm123
81
Di Mac:brew install geckodriver
Nostalg.io
1
Saya menemukan bahwa menjalankannya melalui browser Chrome sedikit lebih cepat daripada di Firefox, Anda hanya perlu mengunduh chromedriveruntuk ini.
tadm123
Catatan: ada Testcafe yang baru-baru ini bersumber terbuka. Itu tidak memerlukan plugin browser apa pun, mereka built-in. Saya ingin menggunakan Selenium tetapi itu terlihat seperti alternatif yang menarik.
Ehvince

Jawaban:

355

selenium.common.exceptions.WebDriverException: Pesan: executable 'geckodriver' harus ada di PATH.

Pertama-tama Anda harus mengunduh geckodriver yang dapat dieksekusi terbaru dari sini untuk menjalankan firefox terbaru menggunakan selenium

Sebenarnya binding klien Selenium mencoba untuk menemukan geckodriverexecutable dari sistem PATH. Anda perlu menambahkan direktori yang berisi executable ke jalur sistem.

  • Pada sistem Unix Anda dapat melakukan hal berikut untuk menambahkannya ke jalur pencarian sistem Anda, jika Anda menggunakan shell yang kompatibel dengan bash:

    export PATH=$PATH:/path/to/directory/of/executable/downloaded/in/previous/step
  • Pada Windows Anda perlu memperbarui variabel sistem Path untuk menambahkan path direktori lengkap ke geckodriver yang dapat dieksekusi secara manual atau baris perintah (jangan lupa untuk me-restart sistem Anda setelah menambahkan geckodriver yang dapat dieksekusi ke dalam sistem PATH agar berlaku) . Prinsipnya sama dengan di Unix.

Sekarang Anda dapat menjalankan kode Anda sama seperti yang Anda lakukan seperti di bawah ini: -

from selenium import webdriver

browser = webdriver.Firefox()

selenium.common.exceptions.WebDriverException: Pesan: Lokasi biner browser yang diharapkan, tetapi tidak dapat menemukan biner di lokasi default, tidak ada 'moz: firefoxOptions.kemampuan biner disediakan, dan tidak ada flag biner yang ditetapkan pada baris perintah

Pengecualian dengan jelas menyatakan Anda telah menginstal firefox di beberapa lokasi lain sementara Selenium mencoba menemukan firefox dan meluncurkan dari lokasi default tetapi tidak dapat menemukannya. Anda perlu memberikan lokasi biner yang diinstal firefox secara eksplisit untuk meluncurkan firefox seperti di bawah ini: -

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)
Saurabh Gaur
sumber
8
Terima kasih, tetapi saya mengatur saya geckodriver.exepada C:\Python\Python35\seleniumdirektori dan saya menetapkan jalan seperti yang Anda jelaskan tetapi itu memberi saya kesalahan di bawah ini:
tadm123
4
Terima kasih @Saurabh Gaur, ini berfungsi sekarang. Saya menambahkan jalur Firefox ke variabel sistem secara manual dan semuanya berfungsi. Butuh sedikit waktu untuk memulai tapi saya rasa itu normal. Terima kasih!
tadm123
3
Saya mendapat kesalahan "WebDriverException: Pesan: Gagal memulai browser: izin ditolak" pada awalnya ketika saya mulai menentukan jalur binari firefox, tetapi memulai kembali komputer (Windows 10) menyelesaikan masalah. - Kalau-kalau ada orang lain yang memukul masalah yang sama seperti saya.
NoSuchElephantException
3
Apa itu biner? Apakah itu berarti dapat dieksekusi?
Pengguna
12
Selain jawaban ini, saya ingin memperluas pengaturan PATHdi lingkungan unix. Anda dapat mengaturnya dalam kode karena Anda tidak memerlukannya dengan sistem yang luas: os.environ["PATH"] += os.pathsep + 'path/to/dir/containing/geckodriver/' Atau cukup simpan binari geckodriver di direktori yang sudah ada di jalur Anda:mv geckodriver /usr/local/bin
dsalaj
161

Ini menyelesaikannya untuk saya.

from selenium import webdriver
driver = webdriver.Firefox(executable_path=r'your\path\geckodriver.exe')
driver.get('http://inventwithpython.com')
Nesa
sumber
Jika Anda mendapatkan izin yang salah, cobalah untuk menghapus [r '] dari jalur, "excecutable_path =' path \ to \ your'diretory '"
Darius
@adityarawat sistem operasi apa yang Anda gunakan?
Nesa
tapi sekarang saya mendapatkan OSError alih-alih izin yang salah. Saya entah bagaimana berhasil menyalin geckodriver ke / usr / local / bin. tetapi sekarang kesalahan baru ini membunuh saya
aditya rawat
@adityarawat Anda dapat mengunduh geckodriver secara mandiri dari sini: github.com/mozilla/geckodriver/releases mengekstraknya dengan tar dan membuatnya dapat dieksekusi dengan chmod + x, tidak harus di / usr / local / bin, Anda hanya perlu untuk menentukan jalan Anda ke sana
Nesa
hanya untuk jelas saya telah mengunduh file arm7hf.tar dan mengekstraknya juga dan menambahkannya ke path menggunakan perintah export PATH=$PATH:geckodriver(itu diekstraksi di Desktop). Tapi itu tidak membantu. Saya masih mendapatkan OSError [errno 8]
aditya rawat
122

langkah ini ASKU bagi saya di ubuntu firefox 50.

  1. Unduh geckodriver

  2. Salin geckodriver di / usr / local / bin

Anda TIDAK perlu menambahkan

firefox_capabilities = DesiredCapabilities.FIREFOX
firefox_capabilities['marionette'] = True
firefox_capabilities['binary'] = '/usr/bin/firefox'
browser = webdriver.Firefox(capabilities=firefox_capabilities)
Andrea Perdicchia
sumber
Dalam kode Anda, Anda tidak dapat menambahkan variabel kapabilitas
Andrea Perdicchia
Apakah Anda tahu cara mengatur direktori unduhan untuk Firefox? Saya menambahkan pertanyaan berikut Atur Firefox Preferences . Bantuan apa pun akan sangat dihargai.
d84_n1nj4
Di Debian atau Ubuntu Anda harus menggunakan perintah apt untuk menginstal Firefox. Untuk Windows saya tidak tahu maaf
Andrea Perdicchia
Terima kasih. Setelah menerapkan jawaban ini, saya selanjutnya mengambil solusi ini untuk menangani masalah tindak lanjut: stackoverflow.com/questions/43713445/…
HackNone
Terima kasih, Pycharm tidak menemukan geckodriver meskipun berada di rumah dan di folder proyek itu sendiri, tetapi setelah memindahkannya ke / usr / local / bin, ia bekerja dengan sempurna
Ronald Das
32

Jawaban oleh @saurabh memecahkan masalah, tetapi tidak menjelaskan mengapa Mengotomatiskan Hal-hal yang Membosankan dengan Python tidak termasuk langkah-langkah itu.

Ini disebabkan oleh buku yang didasarkan pada selenium 2.x dan driver Firefox untuk seri itu tidak memerlukan driver tokek. Antarmuka Gecko untuk mengarahkan browser tidak tersedia saat selenium sedang dikembangkan.

Versi terbaru dalam seri selenium 2.x adalah 2.53.6 (lihat mis. Jawaban ini , untuk tampilan versi yang lebih mudah).

The halaman versi 2.53.6 tidak menyebutkan gecko sama sekali. Tetapi karena versi 3.0.2 dokumentasi secara eksplisit menyatakan Anda perlu menginstal driver gecko.

Jika setelah peningkatan (atau menginstal pada sistem baru), perangkat lunak Anda yang berfungsi dengan baik sebelumnya (atau pada sistem lama Anda) tidak berfungsi lagi dan Anda sedang terburu-buru, sematkan versi selenium di virtualenv Anda dengan melakukan

pip install selenium==2.53.6

tetapi tentu saja solusi jangka panjang untuk pengembangan adalah menyiapkan virtualenv baru dengan versi selenium terbaru, menginstal driver tokek dan menguji apakah semuanya masih berfungsi seperti yang diharapkan. Namun, versi besar bump mungkin memperkenalkan perubahan API lain yang tidak dicakup oleh buku Anda, jadi Anda mungkin ingin tetap menggunakan selenium yang lebih lama, sampai Anda cukup yakin bahwa Anda dapat memperbaiki sendiri perbedaan antara API selenium2 dan selenium3 sendiri.

Anthon
sumber
2
Saya berharap ini adalah jawaban teratas
sudo-nim
1
ini membantu saya, terima kasih Anthon
ghost21blade
25

Pada macOS dengan Homebrew sudah terinstal, Anda cukup menjalankan perintah Terminal

$ brew install geckodriver

Karena homebrew telah memperluas PATH, tidak perlu memodifikasi skrip startup apa pun.

roskakori
sumber
@roskakori Saya melakukan ini dan berhasil diinstal tetapi saya masih mendapatkan kesalahan yang sama
JKC
Ini berhasil untuk saya, terima kasih. Menggunakan Firefox 72.0.2 & Selenium 3.141.0
Sam
17

Untuk mengatur geckodriver untuk Selenium Python:

Perlu mengatur jalur geckodriver dengan FirefoxDriver seperti kode di bawah ini:

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

Unduh geckodriver untuk OS yang cocok Anda (dari https://github.com/mozilla/geckodriver/releases ) -> Ekstrak di folder pilihan Anda -> Atur jalur dengan benar seperti disebutkan di atas

Saya menggunakan Python 3.6.2 dan Selenium WebDriver 3.4.3 di Windows 10.

Cara lain untuk menyiapkan tokekriver:

i) Cukup tempel geckodriver.exe di bawah / Python / Scripts / (Dalam kasus saya foldernya adalah: C: \ Python36 \ Scripts)
ii) Sekarang tulis kode sederhana seperti di bawah ini:

self.driver = webdriver.Firefox()
Ripon Al Wasim
sumber
17

Jika Anda menggunakan Anaconda , yang harus Anda lakukan adalah mengaktifkan lingkungan virtual Anda dan kemudian menginstal geckodriver menggunakan perintah berikut :

    conda install -c conda-forge geckodriver
Rodolfo Alvarez
sumber
Ya, itu menginstal geckodriver, tetapi kesalahan pycharm tetap sama.
WebComer
Hai, saya mencoba banyak hal dan itulah satu-satunya hal yang berhasil untuk saya :-) terima kasih
tezzaaa
12

Ubuntu 18.04+ dan rilis terbaru dari tokekriver

Ini juga harus bekerja untuk varietas * nix lainnya.

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/

Untuk pembaruan mac ke:

geckodriver-$GV-macos.tar.gz
jmunsch
sumber
12

Saya melihat diskusi masih berbicara tentang cara lama menyiapkan geckodriver dengan mengunduh biner dan mengkonfigurasi path secara manual.

Ini dapat dilakukan secara otomatis menggunakan pengelola-web

pip install webdriver-manager

Sekarang kode di atas dalam pertanyaan akan bekerja cukup dengan perubahan di bawah ini,

from selenium import webdriver
from webdriver_manager.firefox import GeckoDriverManager

driver = webdriver.Firefox(executable_path=GeckoDriverManager().install())
Navarasu
sumber
2
Ini berhasil untuk saya. Terima kasih!
igorkf
Apakah Safari atau bahkan Internet Explorer memiliki driver driver yang serupa?
Mischief_Monkey
11

Cara termudah untuk windows!
Unduh versi terbaru geckodriverdari sini . Tambahkan file geckodriver.exe ke direktori python (atau direktori lain yang sudah ada PATH). Ini harus menyelesaikan masalah (Diuji pada Windows 10)

Jall10
sumber
Bukan windows yang terburuk. Terima kasih atas solusi cepatnya.
AJ_
Sejauh ini, ini adalah solusi termudah !! Bahkan tidak perlu me-restart komputer Anda!
olenscki
8

Langkah-langkah untuk MAC:

Solusi sederhana adalah mengunduh GeckoDriver dan menambahkannya ke PATH sistem Anda. Anda dapat menggunakan salah satu dari dua pendekatan ini:

Metode Pendek:

1) Unduh dan hapus zip Geckodriver .

2) Sebutkan jalur saat memulai pengemudi:

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

Metode panjang:

1) Unduh dan hapus zip Geckodriver .

2) Buka .bash_profile. Jika Anda belum membuat itu belum, Anda dapat melakukannya dengan menggunakan perintah: touch ~/.bash_profile. Kemudian buka menggunakan:open ~/.bash_profile

3) Mengingat file GeckoDriver ada di folder Unduhan Anda, Anda dapat menambahkan baris berikut ke .bash_profilefile:

PATH="/Users/<your-name>/Downloads/geckodriver:$PATH"
export PATH

Dengan ini Anda menambahkan path ke GeckoDriver ke System PATH Anda. Ini memberi tahu sistem tempat GeckoDriver berada saat menjalankan skrip Selenium Anda.

4) Simpan .bash_profiledan paksa untuk mengeksekusi. Ini memuat nilai segera tanpa harus reboot. Untuk melakukan ini, Anda dapat menjalankan perintah berikut:

source ~/.bash_profile

5) Itu dia. Kamu selesai!. Anda dapat menjalankan skrip Python sekarang.

Umang Sardesai
sumber
1
Saya dapat mengunduh geckodriverdengan Homebrew: brew install geckodriverdan kemudian memulai Firefox melalui:driver = webdriver.Firefox(executable_path="/usr/local/bin/geckodriver")
Winterflags
7

Beberapa masukan / klarifikasi tambahan untuk pembaca masa depan dari utas ini:

Berikut ini cukup sebagai resolusi untuk Windows 7, Python 3.6, selenium 3.11:

Catatan @ dsalaj di utas ini sebelumnya untuk Unix juga berlaku untuk Windows; bermain-main dengan PATH env. variabel di tingkat Windows dan restart sistem Windows dapat dihindari.

(1) Unduh geckodriver (seperti yang dijelaskan di utas ini sebelumnya) dan tempatkan geckdriver.exe (yang tidak di-zip) di X: \ Folder \ of \ your \ choice

(2) Contoh kode python:

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

Catatan: (1) Diperlukan sekitar 10 detik untuk kode di atas untuk membuka browser Firefox untuk url yang ditentukan.
(2) Konsol python akan menampilkan kesalahan berikut jika tidak ada server yang sudah berjalan di url yang ditentukan atau melayani halaman dengan judul yang berisi string 'Django': selenium.common.exceptions.WebDriverException: Pesan: Reached error page: about : neterror? e = connectionFailure & u = http% 3A // localhost% 3A8000 / & c = UTF-8 & f = reguler & d = Firefox% 20dapat% E2% 80% 9

Snidhi Sofpro
sumber
Terima kasih, saya mencoba semua solusi lain tetapi hanya milik Anda yang bekerja di Windows saya!
pso
4

Saya benar-benar menemukan Anda dapat menggunakan geckodriver terbaru tanpa meletakkannya di jalur sistem. Saat ini saya menggunakan

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

Firefox 50.1.0

Python 3.5.2

Selenium 3.0.2

Windows 10

Saya menjalankan VirtualEnv (yang saya kelola menggunakan PyCharm, saya asumsikan menggunakan Pip untuk menginstal semuanya)

Dalam kode berikut ini saya dapat menggunakan jalur khusus untuk geckodriver menggunakan parameter executable_path (saya menemukan ini dengan melihat di Lib \ situs-paket \ selenium \ webdriver \ firefox \ webdriver.py). Catatan Saya memiliki kecurigaan bahwa urutan argumen parameter saat memanggil webdriver adalah penting, itulah sebabnya executable_path terakhir dalam kode saya (baris terakhir ke-2 ke paling kanan)

Anda juga dapat memperhatikan bahwa saya menggunakan Profil firefox khusus untuk mengatasi masalah sec_error_unknown_issuer yang akan Anda hadapi jika situs yang Anda uji memiliki sertifikat yang tidak dipercaya. lihat Cara menonaktifkan peringatan koneksi tidak tepercaya Firefox menggunakan Selenium?

Setelah penyelidikan ditemukan bahwa driver Marionette tidak lengkap dan masih dalam proses, dan tidak ada pengaturan sejumlah kemampuan atau opsi profil untuk memberhentikan atau menetapkan sertifikat yang akan berfungsi. Jadi lebih mudah menggunakan profil khusus.

Bagaimanapun, inilah kode tentang bagaimana saya membuat geckodriver bekerja tanpa berada di jalur:

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')
Roochiedoor
sumber
Saya mendapat SyntaxError: (unicode error) 'unicodeescape' codec tidak dapat mendekodekan byte ... Dan saya harus mengubah path tokek ke epath = r'C: \ Users \ step_ \ Documents \ mtg_buyer \ geckodrivers \ geckodriver.exe '. Mungkin alasannya adalah bahwa saya menggunakan Windows 10 Cina?
Endle_Zhenbo
3

Saya menggunakan Windows 10 dan ini bekerja untuk saya:

  1. Unduh geckodriver dari sini . Unduh versi yang tepat untuk komputer yang Anda gunakan
  2. Buka zip file yang baru saja Anda unduh dan potong / salin file ".exe" yang ada di dalamnya
  3. Arahkan ke C: {folder root python Anda}. Milik saya adalah C: \ Python27. Rekatkan file geckodriver.exe di folder ini.
  4. Mulai ulang lingkungan pengembangan Anda.
  5. Coba jalankan kodenya lagi, seharusnya sudah berfungsi sekarang.
Edgar N
sumber
Terima kasih telah menyebutkan bahwa Anda perlu memulai kembali lingkungan pengembangan Anda.
Jauh
3

Pertimbangkan untuk menginstal Firefox yang dikemas dalam kontainer:

docker pull selenium/standalone-firefox
docker run --rm -d -p 5555:4444 --shm-size=2g selenium/standalone-firefox

Terhubung menggunakan webdriver.Remote:

driver = webdriver.Remote('http://localhost:5555/wd/hub', DesiredCapabilities.FIREFOX)
driver.set_window_size(1280, 1024)
driver.get('https://toolbox.googleapps.com/apps/browserinfo/')
driver.save_screenshot('info.png')
Max Malysh
sumber
2

Sangat menyedihkan bahwa tidak ada buku yang diterbitkan di Selenium / Python dan sebagian besar komentar tentang masalah ini melalui Google tidak menjelaskan dengan jelas logika pathing untuk mengatur ini di Mac (semuanya Windows !!!!). Youtubes semua pickup di "setelah" Anda punya pengaturan pathing (dalam pikiran saya, jalan keluar murah!). Jadi, bagi Anda pengguna Mac yang hebat, gunakan yang berikut ini untuk mengedit file bash path Anda:

> $ touch ~ / .bash_profile; buka ~ / .bash_profile

Kemudian tambahkan path seperti ini .... * # Mengatur PATH untuk geckodriver PATH = "/ usr / bin / geckodriver: $ {PATH}" export PATH

Mengatur PATH untuk Selenium firefox

PATH = "~ / Pengguna / namaAndaPATH / VEnvPythonInterpreter / lib / python2.7 / paket-situs / selenium / webdriver / firefox /: $ {PATH}" export PATH

Mengatur PATH untuk dieksekusi pada driver firefox

PATH = "/ Pengguna / namamuPATH / VEnvPythonInterpreter / lib / python2.7 / paket-situs / selenium / webdriver / common / service.py: $ {PATH}" export PATH *

Ini berhasil untuk saya. Kekhawatiran saya adalah kapan komunitas Selenium Windows akan mulai memainkan game asli dan memasukkan kita pengguna Mac ke dalam keanggotaan klub sombong mereka.

JustASteve
sumber
2

Selenium menjawab pertanyaan ini dalam DESCRIPTION.rst mereka

Drivers
=======

Selenium requires a driver to interface with the chosen browser. Firefox,
for example, requires `geckodriver <https://github.com/mozilla/geckodriver/releases>`_, 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.

Pada dasarnya, unduh saja tokekriver, buka paketnya dan pindahkan executable ke folder / usr / bin Anda

Peter Graham
sumber
Kutipan ini berisi petunjuk yang bekerja pada linux mint 18.
Elliot Robert
2

Untuk pengguna windows

gunakan kode asli seperti itu:

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

kemudian unduh driver dari: mozilla / geckodriver

Tempatkan di jalur tetap (secara permanen) .. sebagai contoh, saya letakkan di:

C: \ Python35

Lalu pergi ke variabel lingkungan sistem, di grid "Sistem variabel" mencari variabel Path dan tambahkan:

; C: \ Python35 \ geckodriver

geckodriver, bukan geckodriver.exe .

Ghanem
sumber
geckodriver, bukan geckodriver.exe.
Saurabh Chandra Patel
1

Pada Raspberry Pi saya harus membuat dari driver ARM dan mengatur geckodriver dan log path di:

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"):
Nathan Gisvold
sumber
1

Jika Anda menggunakan lingkungan virtual dan win10 (mungkin itu untuk sistem lain), Anda hanya perlu memasukkan geckodriver.exe ke folder berikut di direktori lingkungan virtual Anda:

... \ my_virtual_env_directory \ Scripts \ geckodriver.exe

apet
sumber
1
from webdriverdownloader import GeckoDriverDownloader # vs ChromeDriverDownloader vs OperaChromiumDriverDownloader
gdd = GeckoDriverDownloader()
gdd.download_and_install()
#gdd.download_and_install("v0.19.0")

ini akan memberi Anda jalan ke gekodriver.exe Anda di windows

from selenium import webdriver
driver = webdriver.Firefox(executable_path=r'C:\\Users\\username\\\bin\\geckodriver.exe')
driver.get('https://www.amazon.com/')
Dalam hukum
sumber
0

Mac 10.12.1 python 2.7.10 ini bekerja untuk saya :)

def download(url):
firefox_capabilities = DesiredCapabilities.FIREFOX
firefox_capabilities['marionette'] = True
browser = webdriver.Firefox(capabilities=firefox_capabilities,
                            executable_path=r'/Users/Do01/Documents/crawler-env/geckodriver')
browser.get(url)
return browser.page_source
lakukan01
sumber
0

Saya menggunakan Windows 10 dan Anaconda2. Saya mencoba mengatur variabel jalur sistem tetapi tidak berhasil. Kemudian saya cukup menambahkan file geckodriver.exe ke folder Anaconda2 / Scripts dan semuanya berfungsi dengan baik sekarang. Bagi saya jalannya adalah: -

C: \ Users \ Bhavya \ Anaconda2 \ Scripts

Bhavya Ghai
sumber
0

Jika Anda ingin menambahkan jalur driver di windows 10:

  1. Klik kanan pada ikon "This PC" dan pilih "Properties" masukkan deskripsi gambar di sini

  2. Klik pada "Pengaturan Sistem Lanjutan"

  3. Klik "Variabel Lingkungan" di bagian bawah layar
  4. Di bagian "Variabel Pengguna" sorot "Path" dan klik "Edit"
  5. Tambahkan path ke variabel Anda dengan mengklik "New" dan ketikkan path untuk driver yang Anda tambahkan dan tekan enter.
  6. Setelah Anda selesai memasukkan di jalur, klik "OK"
  7. Terus klik "OK" sampai Anda menutup semua layar
Russ Thomas
sumber
0
  1. pastikan Anda memiliki versi driver (geckodriver) yang benar, x86 atau 64.
  2. pastikan Anda memeriksa lingkungan yang tepat, misalnya pekerjaan berjalan di Docker, sedangkan lingkungan diperiksa adalah host OS
Wen
sumber
0

bagi saya itu cukup dengan menginstal geckodriver di lingkungan yang sama:

$ brew install geckodriver

dan kode itu tidak berubah:

from selenium import webdriver
browser = webdriver.Firefox()
Olesya M
sumber
0

Untuk menambahkan 5 sen saya, juga dimungkinkan untuk melakukan echo PATH(Linux) dan hanya memindahkan geckodriver ke folder yang Anda sukai. Jika folder sistem (bukan lingkungan virtual) adalah target, driver menjadi dapat diakses secara global.

Aramakus
sumber