Pesan kesalahan: "executable 'chromedriver' harus tersedia di jalur"

171

Saya menggunakan selenium dengan python dan telah mengunduh chromedriver untuk komputer windows saya dari situs ini: http://chromedriver.storage.googleapis.com/index.html?path=2.15/

Setelah mengunduh file zip, saya membongkar file zip ke folder unduhan saya. Lalu saya meletakkan path ke biner yang dapat dieksekusi (C: \ Users \ michael \ Downloads \ chromedriver_win32) ke dalam Variabel Lingkungan "Path".

Namun, ketika saya menjalankan kode berikut:

  from selenium import webdriver

  driver = webdriver.Chrome()

... Saya terus menerima pesan kesalahan berikut:

WebDriverException: Message: 'chromedriver' executable needs to be available in the path. Please look at     http://docs.seleniumhq.org/download/#thirdPartyDrivers and read up at http://code.google.com/p/selenium/wiki/ChromeDriver

Tetapi - seperti yang dijelaskan di atas - yang dapat dieksekusi (!) Di jalan ... apa yang terjadi di sini?

kemajuan mantap
sumber
19
Coba salin chromedriver.exedi direktori yang sama dengan skrip Python Anda.
Malik Brahimi
4
Menginstal melalui Chocolatey akan menambahkannya ke jalur choco install chromedriver,.
WhatIsHeDoing
untuk pengguna mengalami masalah ini di pycharm, restart akan menyelesaikannya
Charles Chow
Saya setuju dengan jawaban ImNt. Meskipun saya ingin menambahkan itu untuk mereka yang menggunakan virtualenv, Anda harus menjalankan python dalam file venv Anda sebagai Administrator, menggunakan format contoh berikut: driver = webdriver.Chrome (r'C: / Users / michael / Downloads / chromedriver_win32 /chromedriver.exe ')
Pineda
@MalikBrahimi Saya telah mencari solusi ini di mana-mana dan tidak ada satupun yang benar-benar bekerja sampai saya menemukan komentar Anda. Terima kasih banyak
user2720864

Jawaban:

177

Anda dapat menguji apakah itu benar-benar ada di PATH, jika Anda membuka cmd dan ketik chromedriver(dengan asumsi kromedriver Anda dapat dieksekusi masih bernama seperti ini) dan tekan Enter. Jika Starting ChromeDriver 2.15.322448muncul, PATH diatur dengan tepat dan ada sesuatu yang salah.

Atau Anda dapat menggunakan jalur langsung ke chromedriver seperti ini:

 driver = webdriver.Chrome('/path/to/chromedriver') 

Jadi dalam kasus spesifik Anda:

 driver = webdriver.Chrome("C:/Users/michael/Downloads/chromedriver_win32/chromedriver.exe")
lmNt
sumber
3
Terima kasih atas jawabannya: "Memulai ChromeDriver 2.15.322448" memang muncul. "Hanya koneksi lokal yang diizinkan." juga muncul. ... Tapi saya kira ini tidak apa-apa? .... Satu hal yang saya bertanya-tanya adalah ini: Di ​​situs web hanya ada versi 32bit chromedriver tersedia .... tetapi ini harus bekerja dengan baik dengan windows 64bit saya, bukan?
stable_progress
@steady_progress Ya, tidak apa-apa. Dan ini akan bekerja dengan Windows 64bit; Saya menggunakannya sendiri. Saya menduga mungkin versi selenium dapat menyebabkan masalah? Yang mana yang sudah Anda instal? Sudahkah Anda menginstalnya menggunakan pip?
lmNt
Sudahkah Anda mencoba menggunakan jalur langsung ke pengemudi saat memanggil webdriver seperti yang saya sebutkan dalam jawaban? Apakah gagal dengan kesalahan yang sama?
lmNt
4
Saat menambahkan webdriver ke PATH Anda, apa pun OSnya, sertakan hanya direktori tempat webdriver Anda disimpan, bukan yang dapat dieksekusi. Contoh: PATH = $ PATH: / path / ke / webdriver / folder, bukan PATH = $ PATH: / path / ke / webdriver / chromedriver. Selain itu, menggunakan PATH jauh lebih portabel daripada mengirimkan lokasi ke webdriver Anda. Panggilan (), karena kami selalu dapat menganggap PATH diatur dengan benar di mana pun kode Anda dijalankan, tetapi kami tidak dapat menganggap struktur file mereka diatur secara identik .
Aphid
2
mencoba menggunakan solusi yang sama tetapi mendapatkan kesalahan ini: WebDriverException: Pesan: executable 'chromedriver.exe' mungkin memiliki izin yang salah. Silakan lihat sites.google.com/a/chromium.org/chromedriver/home
Yogesh
150

Saya melihat diskusi masih berbicara tentang cara lama menyiapkan chromedriver 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.chrome import ChromeDriverManager

driver = webdriver.Chrome(ChromeDriverManager().install())

Hal yang sama dapat digunakan untuk mengatur Firefox, Edge dan binari.

Navarasu
sumber
@ Navarasu dengan segala hormat mengapa ada orang yang mengikuti sesuatu dari 3.6 ketika arus 3.7. Lain kali akan lebih baik untuk secara eksplisit mengatakan bahwa itu untuk 3,6 .... Terima kasih
Azy Sır
5
ini luar biasa karena tetap up to date juga
Leslie Alldridge
1
Hal yang baik tentang solusi ini adalah ia memiliki lebih banyak fleksibilitas daripada solusi lain yang didasarkan pada pengaturan jalur tertentu, yang menurut saya tidak praktis dalam hal menggunakan skrip pada beberapa mesin.
IBRAHIM
14

Situasi yang sama dengan edisi komunitas pycharm, jadi, seperti untuk cmd, Anda harus memulai ulang ide Anda untuk memuat ulang variabel path. Mulai ulang ide Anda dan itu akan baik-baik saja.

Andrea Bisello
sumber
2
Terima kasih. Saya memiliki masalah yang sama di Visual Studios. Baru saja restart IDE dan berhasil :) Terima kasih
DollarAkshay
Bekerja untuk saya juga.
CARTOS
13

Di Linux (Ubuntu atau Debian):

sudo apt install chromium-chromedriver

Di macOS instal https://brew.sh/ lalu lakukan

brew cask install chromedriver
Boris
sumber
Kemudian gunakan: driver = webdriver.Chrome ('/ usr / lib / chromium-browser / chromedriver') .. tanpa mengubah $ PATH
alkimia
@Alchemy apakah kamu yakin harus melakukan itu? Seingat saya, driver = webdriver.Chrome()bekerja dengan baik untuk saya.
Boris
Hai Boris, ya, tidak yakin mengapa .. bahkan setelah menambahkan ke PATH tidak berhasil tanpa itu. Saya yakin menyiapkan jalur dengan benar akan lebih baik, tetapi saya hanya perlu melakukan satu hal dengan Chromedriver dengan cepat
alkimia
9

Kita harus menambahkan string path, mulai dengan huruf rsebelum string, untuk string mentah. Saya diuji dengan cara ini, dan berhasil.

driver = webdriver.Chrome(r"C:/Users/michael/Downloads/chromedriver_win32/chromedriver.exe")
James0007
sumber
3

Beberapa masukan / klarifikasi tambahan untuk pembaca masa depan utas ini, untuk menghindari bermain-main dengan PATH env. variabel di tingkat Windows dan mulai ulang sistem Windows: (salinan jawaban saya dari https://stackoverflow.com/a/49851498/9083077 yang berlaku untuk Chrome):

(1) Unduh chromedriver (seperti yang dijelaskan di utas ini sebelumnya) dan letakkan chromedriver.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.Chrome();
browser.get('http://localhost:8000')
assert 'Django' in browser.title

Catatan: (1) Diperlukan waktu sekitar 5 detik untuk kode sampel (dalam jawaban yang dirujuk) untuk membuka browser Firefox untuk url yang ditentukan. (2) Konsol python akan menampilkan kesalahan berikut jika tidak ada server yang berjalan di url yang ditentukan atau melayani halaman dengan judul yang berisi string 'Django': nyatakan 'Django' di browser.title AssertionError

Snidhi Sofpro
sumber
3

Untuk Linux dan OSX

Langkah 1: Unduh chromedriver

# You can find more recent/older versions at http://chromedriver.storage.googleapis.com/
# Also make sure to pick the right driver, based on your Operating System
wget http://chromedriver.storage.googleapis.com/81.0.4044.69/chromedriver_mac64.zip

Langkah 2: Tambahkan chromedriver ke /usr/local/bin

unzip chromedriver_mac64.zip
cp chromedriver /usr/local/bin

Anda sekarang seharusnya bisa berlari

from selenium import webdriver

browser = webdriver.Chrome()
browser.get('http://localhost:8000')

tanpa masalah

Giorgos Myrianthous
sumber
Jelas dinyatakan bahwa dia menggunakan Windows, ini untuk Linux.
misantroop
1
@misantroop Saya telah memperbarui jawaban saya untuk memperjelas ini.
Giorgos Myrianthous
2

Saat Anda unzip chromedriver, harap tentukan lokasi yang tepat agar Anda dapat melacaknya nanti. Di bawah, Anda mendapatkan chromedriver yang tepat untuk OS Anda, dan kemudian meng-unzip ke lokasi yang tepat, yang dapat diberikan sebagai argumen nanti dalam kode Anda.

wget http://chromedriver.storage.googleapis.com/2.10/chromedriver_linux64.zip unzip chromedriver_linux64.zip -d /home/virtualenv/python2.7.9/

Harshdeep Singh
sumber
3
Atau untuk /usr/local/bin/menginstal secara global.
Jeppe
2

Jika Anda bekerja dengan kerangka robot RIDE. Kemudian Anda dapat mengunduh Chromedriver.exedari situs web resminya dan menyimpan file .exe ini di C:\Python27\Scriptsdirektori. Sekarang sebutkan jalur ini sebagai variabel lingkungan Anda mis. C:\Python27\Scripts\chromedriver.exe.

Nyalakan kembali komputer Anda dan jalankan lagi test case yang sama. Anda tidak akan mendapatkan masalah ini lagi.

Rahul Tiwari
sumber
2

Menurut instruksi , Anda harus menyertakan jalur ke ChromeDriver saat membuat instance webdriver.Chrome misalnya .:

driver = webdriver.Chrome('/path/to/chromedriver')
AnnaSummerShine
sumber
Jika Anda menggulir instruksi itu ke kanan, ada komentar yang mengatakan "Argumen opsional, jika tidak ditentukan akan mencari jalur." Tetapi setidaknya beberapa versi webdriver tampaknya memeriksa chromedriver yang mereka temukan di jalur dan jika tidak 'senang' dengan itu (versi salah dll) tidak akan menggunakannya (kecuali dipaksa untuk tetap mencoba dengan mengatur parameter ini). Ini akan terus mencari jalur untuk versi yang lebih baik, kemudian mengeluh jika tidak dapat menemukannya. ("Tidak ditemukan kromedriver yang cocok" akan menjadi pesan yang lebih baik daripada "tidak ditemukan kromedriver".)
Silas S. Brown
2

Sebelum Anda menambahkan chromedriver ke jalur Anda, pastikan itu versi yang sama dengan browser Anda.

Jika tidak, Anda harus mencocokkan versi: perbarui / turunkan versi Anda, dan tingkatkan / turunkan versi webdriver Anda.

Saya sarankan memperbarui versi chrome Anda sebanyak mungkin, dan mencocokkan driver web.

Untuk memperbarui chrome:

  • Di sudut kanan atas, klik pada tiga titik.
  • klik help->About Google Chrome
  • perbarui versi dan mulai ulang chrome

Kemudian unduh versi yang kompatibel dari sini: http://chromedriver.chromium.org/downloads .

Catatan: Chromedriver terbaru tidak selalu cocok dengan versi chrome terbaru!

Sekarang Anda dapat menambahkannya ke PATH:

  1. buat folder baru di suatu tempat di komputer Anda, tempat Anda akan menempatkan driver web Anda. Saya membuat sebuah folder bernama webdriversdiC:\Program Files

  2. salin jalur folder. Dalam kasus saya ituC:\Program Files\webdrivers

  3. klik kanan pada this PC-> properties:

masukkan deskripsi gambar di sini

  1. Di klik kanan Advanced System settings
  2. Klik Environment Variables
  3. Di System variables, klik pathdan klikedit
  4. klik new
  5. rekatkan jalur yang Anda salin sebelumnya
  6. klik OK di semua jendela

Itu dia! Saya menggunakan pycharm dan saya harus membukanya kembali. Mungkin sama dengan IDE atau terminal lain.

Alon Gouldman
sumber
1

Bisa mencoba me-restart komputer jika tidak berfungsi setelah Anda cukup yakin bahwa PATH diatur dengan benar.

Dalam kasus saya di windows 7, saya selalu mendapat kesalahan di WebDriverException: Pesan: untuk chromedriver, gecodriver, IEDriverServer. Saya cukup yakin bahwa saya memiliki jalur yang benar. Nyalakan kembali komputer, semua berfungsi

belajar Kelinci
sumber
0

Dalam kasus saya, kesalahan ini hilang ketika saya menyalin file chromedriver ke folder c: \ Windows. Ini karena direktori windows berada di jalur yang skrip python memeriksa ketersediaan chromedriver.

Hamid
sumber
0

Jika Anda menggunakan interpreter jarak jauh, Anda juga harus memeriksa apakah PATH yang dapat dieksekusi didefinisikan. Dalam kasus saya, beralih dari interpreter Docker jarak jauh ke interpreter lokal memecahkan masalah.

Rafał
sumber
0

Saya mengalami masalah yang sama dengan Anda. Saya menggunakan PyCharm untuk menulis program, dan saya pikir masalahnya terletak pada pengaturan lingkungan di PyCharm daripada OS. Saya memecahkan masalah dengan pergi ke konfigurasi skrip dan kemudian mengedit PATH dalam variabel lingkungan secara manual. Semoga bermanfaat!

sia1998
sumber
Pilihan lain adalah memindahkan chromedriver Anda langsung ke / usr / local / bin, maka Anda tidak perlu repot menambahkan path sama sekali
sia1998
0

Tambahkan webdriver (chromedriver.exe atau geckodriver.exe) di sini C: \ Windows . Ini berhasil dalam kasus saya

Suguresh Soppimath
sumber
0

Cara terbaik adalah mungkin untuk mendapatkan direktori saat ini dan menambahkan alamat yang tersisa ke dalamnya. Seperti kode ini (Word di windows. Di linux Anda bisa menggunakan sesuatu line pwd): webdriveraddress = str(os.popen("cd").read().replace("\n", ''))+'\path\to\webdriver'


sumber
0

Ketika saya mengunduh chromedriver.exe, saya hanya memindahkannya di folder PATH C: \ Windows \ System32 \ chromedriver.exe dan memiliki masalah yang sama persis.

Bagi saya solusinya adalah dengan hanya mengubah folder di PATH, jadi saya hanya memindahkannya di folder Pycharm Community yang juga ada di PATH. ex:

  • C: \ Windows \ System32 \ chromedriver.exe -> Memberi saya pengecualian
  • C: \ Program Files \ JetBrains \ PyCharm Community Edition 2019.1.3 \ bin \ chromedriver.exe -> bekerja dengan baik
Denis Imamovic
sumber
0

Apakah masalah ini dengan Mac Mojave menjalankan kerangka uji Robot dan Chrome 77. Ini menyelesaikan masalah. Kudos @Navarasu karena mengarahkan saya ke jalur yang benar.

$ pip install webdriver-manager --user # install webdriver-manager lib for python
$ python # open python prompt

Selanjutnya, dalam python prompt:

from selenium import webdriver
from webdriver_manager.chrome import ChromeDriverManager
driver = webdriver.Chrome(ChromeDriverManager().install())

# ctrl+d to exit

Ini mengarah ke kesalahan berikut:

Checking for mac64 chromedriver:xx.x.xxxx.xx in cache
There is no cached driver. Downloading new one...
Trying to download new driver from http://chromedriver.storage.googleapis.com/xx.x.xxxx.xx/chromedriver_mac64.zip
...
TypeError: makedirs() got an unexpected keyword argument 'exist_ok'
  • Saya sekarang mendapat tautan unduhan terbaru
    • Unduh dan unzip chromedriver ke tempat yang Anda inginkan
    • Sebagai contoh: ~/chromedriver/chromedriver

Buka ~/.bash_profiledengan editor dan tambahkan:

export PATH="$HOME/chromedriver:$PATH"

Buka jendela terminal baru, ta-da 🎉

sampoh
sumber
0

Saya mengalami masalah ini di Webdriver 3.8.0 (Chrome 73.0.3683.103 dan ChromeDriver 73.0.3683.68). Masalahnya hilang setelah saya melakukannya

pip install -U selenium

untuk memutakhirkan Webdriver ke 3.14.1.

Silas S. Brown
sumber
0

Cara terbaik pasti ada di sini:

Unduh dan unzip chromedriver dan masukkan 'chromedriver.exe' di C: \ Python27 \ Scripts dan kemudian Anda tidak perlu menyediakan jalur driver, cukup

driver= webdriver.Chrome()

Anda selesai tidak perlu menambahkan jalur atau apa pun

nirupam kapoor
sumber
0

Periksa jalur driver chrome Anda, mungkin tidak mendapatkannya dari sana. Cukup Salin tempelkan lokasi driver ke dalam kode.

ChandyShot
sumber
-3

(untuk pengguna Mac) Saya memiliki masalah yang sama tetapi saya diselesaikan dengan cara sederhana ini: Anda harus meletakkan chromedriver.exe Anda di folder yang sama ke skrip yang Anda jalankan dan daripada di pyhton tulis instruksi ini:

impor os

os.environ ["PATH"] + = os.pathsep + r'X: / folder / skrip / Anda /

walid_data
sumber
2
Solusi yang Anda usulkan persis sama dengan salah satu pengguna lain. Harap perhatikan jawaban lain sebelum memposting.
Nikita Kniazev
Bukankah @walid_data mengatakan ini untuk menunjukkan bahwa ini mungkin hanya masalah windows?
benc