ข้อความแสดงข้อผิดพลาด:“ ปฏิบัติการ 'Chromedriver' จะต้องมีอยู่ในเส้นทาง”


172

ฉันใช้ซีลีเนียมกับไพ ธ อนและได้ดาวน์โหลด Chromedriver สำหรับคอมพิวเตอร์ที่ใช้ Windows จากเว็บไซต์นี้: http://chromedriver.storage.googleapis.com/index.html?path=2.15/

หลังจากดาวน์โหลดไฟล์ zip ฉันจะแตกไฟล์ zip ลงในโฟลเดอร์ดาวน์โหลดของฉัน จากนั้นฉันก็ใส่เส้นทางไปยังไบนารีที่ปฏิบัติการได้ (C: \ Users \ michael \ Downloads \ chromedriver_win32) ใน "เส้นทาง" ตัวแปรสภาพแวดล้อม

อย่างไรก็ตามเมื่อฉันเรียกใช้รหัสต่อไปนี้:

  from selenium import webdriver

  driver = webdriver.Chrome()

... ฉันได้รับข้อความแสดงข้อผิดพลาดต่อไปนี้:

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

แต่ - ตามที่อธิบายไว้ข้างต้น - ไฟล์ปฏิบัติการ (!) อยู่ในเส้นทาง ... เกิดอะไรขึ้นที่นี่?


20
ลองคัดลอกchromedriver.exeในไดเรกทอรีเดียวกันกับสคริปต์ Python ของคุณ
Malik Brahimi

4
การติดตั้งผ่านChocolateyจะเพิ่มเข้าไปในเส้นทาง, choco install chromedriver.
WhatIsHeDoing

สำหรับผู้ใช้ที่พบปัญหานี้ใน pycharm การรีสตาร์ทจะแก้ไขได้
Charles Chow

ฉันเห็นด้วยกับคำตอบของ ImNt แม้ว่าฉันต้องการเพิ่มสิ่งนั้นสำหรับผู้ที่ใช้ virtualenv คุณควรใช้ python ในไฟล์ venv ของคุณในฐานะผู้ดูแลระบบโดยใช้รูปแบบตัวอย่างต่อไปนี้: driver = webdriver.Chrome (r'C: / Users / michael / Downloads / chromedriver_win32 /chromedriver.exe ')
Pineda

@ MalikBrahimi ฉันค้นหาโซลูชันนี้ทุกหนทุกแห่งและไม่มีวิธีใดทำงานได้จริงจนกว่าฉันจะพบความคิดเห็นของคุณ ขอบคุณมาก
user2720864

คำตอบ:


179

คุณสามารถทดสอบว่าจริง ๆ แล้วอยู่ใน PATH หรือไม่ถ้าคุณเปิด cmd และพิมพ์chromedriver(สมมติว่า chromedriver ที่ปฏิบัติการได้ของคุณยังคงมีชื่อเช่นนี้) และกด Enter หากStarting ChromeDriver 2.15.322448ปรากฏขึ้น PATH จะถูกตั้งค่าอย่างเหมาะสมและมีบางอย่างผิดปกติ

หรือคุณสามารถใช้เส้นทางตรงไปยัง Chromedriver ดังนี้:

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

ดังนั้นในกรณีเฉพาะของคุณ:

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

3
ขอบคุณสำหรับคำตอบ: "การเริ่มต้นใช้งาน ChromeDriver 2.15.322448" ปรากฏขึ้น "อนุญาตเฉพาะการเชื่อมต่อท้องถิ่น" ก็ปรากฏตัวขึ้น ... แต่ฉันเดาว่ามันโอเคมั้ย .... สิ่งหนึ่งที่ฉันสงสัยคือ: บนเว็บไซต์มี Chromedriver รุ่น 32 บิตเท่านั้น .... แต่มันควรจะทำงานได้ดีกับ windows 64 บิตของฉันใช่ไหม?
steady_progress

@steady_progress ใช่แล้วมันก็โอเค และจะใช้กับ Windows 64 บิตได้ ฉันใช้มันเอง ฉันสงสัยว่าเวอร์ชั่นซีลีเนียมอาจทำให้เกิดปัญหาหรือไม่ คุณติดตั้งรุ่นใด คุณติดตั้งมันโดยใช้pip?
lmNt

คุณได้ลองใช้เส้นทางตรงไปยังไดรเวอร์เมื่อเรียก webdriver ดังที่ฉันได้กล่าวไว้ในคำตอบหรือไม่? มันล้มเหลวด้วยข้อผิดพลาดเดียวกันหรือไม่
lmNt

4
เมื่อเพิ่ม webdrivers ไปยัง PATH ของคุณไม่ว่าระบบปฏิบัติการจะมีเฉพาะไดเร็กตอรี่ที่เก็บเว็บไวเซอร์ของคุณ, ไม่ใช่ไฟล์ที่เรียกใช้งานได้ ตัวอย่าง: PATH = $ PATH: / path / to / webdriver / folder ไม่ใช่ PATH = $ PATH: / path / to / webdriver / chromedriver นอกจากนี้การใช้ PATH นั้นสามารถพกพาได้มากกว่าการส่งผ่านตำแหน่งในการเรียก webdriver.Chrome () ของคุณเนื่องจากเราสามารถสันนิษฐานได้ว่า PATH ถูกตั้งค่าอย่างถูกต้องทุกที่ที่โค้ดของคุณทำงาน แต่เราไม่สามารถสันนิษฐานได้ว่าโครงสร้างไฟล์ของพวกเขานั้น .
Aphid

2
พยายามที่จะใช้วิธีการแก้ปัญหาเดียวกัน แต่ได้รับข้อผิดพลาดนี้: WebDriverException: ข้อความ: ปฏิบัติการ 'Chromedriver.exe' อาจมีสิทธิ์ที่ไม่ถูกต้อง โปรดดูsites.google.com/a/chromium.org/chromedriver/home
Yogesh

152

ฉันเห็นการสนทนายังคงพูดคุยเกี่ยวกับวิธีเก่าแก่ของการตั้งค่า Chromedriver โดยการดาวน์โหลดไบนารี่และกำหนดเส้นทางด้วยตนเอง

สิ่งนี้สามารถทำได้โดยอัตโนมัติโดยใช้webdriver-manager

pip install webdriver-manager

ตอนนี้โค้ดด้านบนในคำถามจะทำงานได้โดยง่ายด้วยการเปลี่ยนแปลงด้านล่าง

from selenium import webdriver
from webdriver_manager.chrome import ChromeDriverManager

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

สามารถใช้เพื่อตั้งค่า Firefox, Edge และไบนารีเช่นเดียวกัน


@Navarasu ด้วยความเคารพอย่างสูงว่าทำไมทุกคนจะทำตามบางอย่างจาก 3.6 เมื่อกระแสคือ 3.7 ครั้งต่อไปมันจะดีที่จะบอกอย่างชัดเจนว่ามันเป็น 3.6 .... ขอบคุณ
Azy Sır

5
นี่มันยอดเยี่ยมเพราะมันยังทันสมัยอยู่เสมอ
Leslie Alldridge

1
สิ่งที่ดีเกี่ยวกับโซลูชันนี้คือมันมีความยืดหยุ่นมากกว่าโซลูชันอื่น ๆ ตามการตั้งค่าเส้นทางที่เฉพาะเจาะจงซึ่งฉันเห็นการใช้งานไม่ได้ในแง่ของการใช้สคริปต์บนเครื่องหลายเครื่อง
IBRAHIM

14

สถานการณ์เดียวกันกับ pycharm community edition ดังนั้นสำหรับ cmd คุณต้องรีสตาร์ท ide ของคุณเพื่อรีโหลดตัวแปรพา ธ รีสตาร์ท IDE ของคุณและควรจะดี


2
ขอบคุณ ฉันมีปัญหาเดียวกันใน Visual Studios เพิ่งรีสตาร์ท IDE และใช้งานได้ :) ขอบคุณ
DollarAkshay

ทำงานให้ฉันเช่นกัน
CARTOS

13

บน Linux (Ubuntu หรือ Debian):

sudo apt install chromium-chromedriver

ใน macOS ติดตั้งhttps://brew.sh/จากนั้นทำ

brew cask install chromedriver

จากนั้นใช้: ไดรเวอร์ = webdriver.Chrome ( '/ usr / lib / โครเมียมเบราว์เซอร์ / chromedriver') ..without เปลี่ยน $ PATH
ขลัง

@alchemy คุณแน่ใจหรือว่าต้องทำเช่นนั้น? อย่างที่ฉันจำได้มันใช้ได้driver = webdriver.Chrome()ดีสำหรับฉัน
บอริส

สวัสดีบอริสใช่ไม่แน่ใจว่าทำไม .. แม้หลังจากเพิ่มเส้นทางมันไม่ได้ทำงานโดยที่ไม่ ฉันแน่ใจว่าการตั้งค่าเส้นทางอย่างถูกต้องน่าจะดีกว่า แต่ฉันต้องทำสิ่งหนึ่งกับ Chromedriver อย่างรวดเร็ว
การเล่นแร่แปรธาตุ

9

เราต้องเพิ่มเส้นทางสตริงเริ่มต้นด้วยตัวอักษรrก่อนที่สตริงสำหรับสตริงดิบ ฉันทดสอบด้วยวิธีนี้และใช้งานได้

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

3

อินพุต / การชี้แจงเพิ่มเติมบางอย่างสำหรับผู้อ่านในอนาคตของเธรดนี้เพื่อหลีกเลี่ยงการแก้ไขด้วย PATH env ตัวแปรที่ระดับ Windows และรีสตาร์ทระบบ Windows: (คัดลอกคำตอบของฉันจากhttps://stackoverflow.com/a/49851498/9083077ตามที่ใช้กับ Chrome):

(1) ดาวน์โหลด chromedriver (ตามที่อธิบายไว้ในหัวข้อนี้ก่อนหน้า) และวาง (unzipped) chromedriver.exe ที่ X: \ Folder \ of \ your \ choice

(2) ตัวอย่างโค้ด 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

หมายเหตุ: (1) อาจใช้เวลาประมาณ 5 วินาทีสำหรับโค้ดตัวอย่าง (ในคำตอบอ้างอิง) เพื่อเปิดเบราว์เซอร์ Firefox สำหรับ URL ที่ระบุ (2) คอนโซลหลามจะแสดงข้อผิดพลาดต่อไปนี้หากไม่มีเซิร์ฟเวอร์ที่ทำงานอยู่ใน URL ที่ระบุหรือให้บริการหน้าเว็บที่มีชื่อเรื่องที่มีสตริง 'Django': ยืนยัน 'Django' ใน browser.title AssertionError


3

สำหรับ Linux และ OSX

ขั้นตอนที่ 1: ดาวน์โหลด 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

ขั้นตอนที่ 2: เพิ่ม Chromedriver /usr/local/bin

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

ตอนนี้คุณควรจะสามารถเรียกใช้

from selenium import webdriver

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

ไม่มีปัญหาใด ๆ


ได้ระบุไว้อย่างชัดเจนว่าเขาใช้ Windows นี่คือสำหรับ Linux
misantroop

1
@misantroop ฉันได้อัปเดตคำตอบเพื่อให้ชัดเจน
Giorgos Myrianthous

2

เมื่อคุณคลายซิป chromedriver โปรดระบุตำแหน่งที่แน่นอนเพื่อให้คุณสามารถติดตามได้ในภายหลัง ด้านล่างคุณจะได้รับ Chromedriver ที่ถูกต้องสำหรับระบบปฏิบัติการของคุณแล้วทำการแตกไฟล์ไปยังตำแหน่งที่แน่นอน

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


3
หรือจะ/usr/local/bin/ติดตั้งทั่วโลก
Jeppe

2

หากคุณกำลังทำงานกับ RIDE จากนั้นคุณสามารถดาวน์โหลดได้Chromedriver.exeจากเว็บไซต์ทางการและเก็บไฟล์. exe นี้ไว้ในC:\Python27\Scriptsไดเรกทอรี ตอนนี้พูดถึงเส้นทางนี้เป็นตัวแปรสภาพแวดล้อมของคุณเช่น C:\Python27\Scripts\chromedriver.exe.

รีสตาร์ทคอมพิวเตอร์และเรียกใช้กรณีทดสอบเดียวกันอีกครั้ง คุณจะไม่ได้รับปัญหานี้อีกครั้ง


2

ตามคำแนะนำคุณจะต้องรวมถึงเส้นทางไปที่ ChromeDriver เมื่อ instantiating webdriver.Chrome เช่น:

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

หากคุณเลื่อนคำแนะนำเหล่านั้นไปทางขวามีความคิดเห็นที่ระบุว่า "อาร์กิวเมนต์ที่เลือกระบุได้หากไม่ได้ระบุจะค้นหาพา ธ แต่อย่างน้อยบางรุ่นของ webdriver ดูเหมือนจะตรวจสอบ Chromedriver ใด ๆ ที่พวกเขาพบในเส้นทางและถ้ามัน 'ไม่พอใจ' กับมัน (เวอร์ชั่นผิด ฯลฯ ) มันจะไม่ใช้มัน (เว้นแต่บังคับให้ลองใหม่ด้วยการตั้งค่าพารามิเตอร์นี้) มันจะทำการค้นหาเส้นทางสำหรับรุ่นที่ดีกว่าแล้วบ่นว่าหาไม่เจอ ("ไม่พบ Chromedriver ที่เหมาะสม" น่าจะเป็นข้อความที่ดีกว่า "ไม่พบ Chromedriver")
Silas S. Brown

2

ก่อนที่คุณจะเพิ่ม Chromedriver ให้กับเส้นทางของคุณตรวจสอบให้แน่ใจว่าเป็นรุ่นเดียวกันกับเบราว์เซอร์ของคุณ

หากไม่คุณจะต้องจับคู่เวอร์ชัน: อัปเดต / ดาวน์เกรดคุณ chrome และอัปเกรด / ดาวน์เกรดเว็บเบราเซอร์ของคุณ

ฉันขอแนะนำให้อัปเดตเวอร์ชัน Chrome ของคุณให้เร็วที่สุดเท่าที่จะทำได้

หากต้องการอัปเดต Chrome:

  • ที่มุมขวาบนให้คลิกที่จุดสามจุด
  • คลิกhelp->About Google Chrome
  • อัปเดตเวอร์ชันและรีสตาร์ท Chrome

จากนั้นดาวน์โหลดรุ่นที่รองรับจากที่นี่: http://chromedriver.chromium.org/downloads

หมายเหตุ: Chromedriver ใหม่ล่าสุดนั้นไม่ตรงกับ chrome รุ่นใหม่ล่าสุดเสมอไป!

ตอนนี้คุณสามารถเพิ่มลงใน PATH:

  1. สร้างโฟลเดอร์ใหม่ที่ใดที่หนึ่งในคอมพิวเตอร์ของคุณที่คุณจะวางไดรเวอร์เว็บของคุณ ฉันสร้างโฟลเดอร์ชื่อwebdriversในC:\Program Files

  2. คัดลอกเส้นทางโฟลเดอร์ ในกรณีของฉันมันเป็นC:\Program Files\webdrivers

  3. คลิกขวาที่this PC-> properties:

ป้อนคำอธิบายรูปภาพที่นี่

  1. เมื่อคลิกขวา Advanced System settings
  2. คลิก Environment Variables
  3. ในSystem variablesคลิกpathและคลิกedit
  4. คลิก new
  5. วางเส้นทางที่คุณคัดลอกมาก่อน
  6. คลิกตกลงบนหน้าต่างทั้งหมด

แค่นั้นแหละ! ฉันใช้ pycharm และฉันต้องเปิดใหม่อีกครั้ง อาจเหมือนกันกับ IDE หรือเทอร์มินัลอื่น ๆ


1

อาจลองรีสตาร์ทคอมพิวเตอร์หากไม่ได้ผลหลังจากที่คุณแน่ใจว่า PATH ตั้งค่าไว้อย่างถูกต้อง

ในกรณีของฉันใน windows 7 ฉันมักจะได้รับข้อผิดพลาดใน WebDriverException: ข้อความ: สำหรับ Chromedriver, gecodriver, IEDriverServer ฉันค่อนข้างมั่นใจว่าฉันมีเส้นทางที่ถูกต้อง รีสตาร์ทคอมพิวเตอร์ทำงานได้ทั้งหมด


1

วิธีที่ดีที่สุดแน่นอนอยู่ที่นี่:

ดาวน์โหลดและคลายซิป Chromedriver และใส่ 'chromedriver.exe' ใน C: \ Python27 \ Scripts จากนั้นคุณไม่จำเป็นต้องระบุเส้นทางของไดรเวอร์เพียง

driver= webdriver.Chrome()

คุณไม่จำเป็นต้องเพิ่มเส้นทางหรืออะไร


0

ในกรณีของฉันข้อผิดพลาดนี้จะหายไปเมื่อฉันคัดลอกไฟล์ Chromedriver ไปยังโฟลเดอร์ c: \ Windows มันเป็นเพราะไดเรกทอรี windows อยู่ในเส้นทางที่สคริปต์หลามตรวจสอบความพร้อมใช้งานของ Chromedriver


0

หากคุณใช้ล่ามระยะไกลคุณต้องตรวจสอบว่าได้กำหนด PATH ที่ทำงานได้หรือไม่ ในกรณีของฉันเปลี่ยนจากล่ามนักเทียบระยะไกลเป็นล่ามท้องถิ่นแก้ปัญหา


0

ฉันพบปัญหาเดียวกับคุณ ฉันใช้ PyCharm เพื่อเขียนโปรแกรมและฉันคิดว่าปัญหาอยู่ที่การตั้งค่าสภาพแวดล้อมใน PyCharm มากกว่าระบบปฏิบัติการ ฉันแก้ไขปัญหาโดยไปที่การกำหนดค่าสคริปต์แล้วแก้ไข PATH ในตัวแปรสภาพแวดล้อมด้วยตนเอง หวังว่าคุณจะพบว่าสิ่งนี้มีประโยชน์!


อีกตัวเลือกหนึ่งคือการย้าย Chromedriver ของคุณโดยตรงไปที่ / usr / local / bin จากนั้นคุณจะไม่ต้องกังวลกับการเพิ่มเส้นทางเลย
4252 sia1998


0

วิธีที่ดีที่สุดอาจจะเป็นไดเรกทอรีปัจจุบันและผนวกที่อยู่ที่เหลือลงไป ชอบรหัสนี้ (Word บน windows บน linux คุณสามารถใช้บางอย่างบรรทัด pwd): webdriveraddress = str(os.popen("cd").read().replace("\n", ''))+'\path\to\webdriver'


0

เมื่อฉันดาวน์โหลด chromedriver.exe ฉันเพิ่งย้ายมันในโฟลเดอร์ PATH C: \ Windows \ System32 \ chromedriver.exe และมีปัญหาเดียวกันแน่นอน

สำหรับฉันทางออกคือเปลี่ยนโฟลเดอร์ใน PATH ดังนั้นฉันเพิ่งย้ายไปที่โฟลเดอร์ถังขยะ Pycharm Community ที่อยู่ใน PATH อดีต:

  • C: \ Windows \ System32 \ chromedriver.exe -> ให้ข้อยกเว้นแก่ฉัน
  • C: \ Program Files \ JetBrains \ PyCharm Community Edition 2019.1.3 \ bin \ chromedriver.exe -> ทำงานได้ดี

0

มีปัญหากับ Mac Mojave ที่รันกรอบการทดสอบ Robot และ Chrome 77 ปัญหานี้แก้ไขได้ รุ่งโรจน์ @Navarasu สำหรับการชี้ให้ฉันไปถูก

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

ถัดไปในพรอมต์พรอมต์:

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

# ctrl+d to exit

สิ่งนี้นำไปสู่ข้อผิดพลาดต่อไปนี้:

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'
  • ตอนนี้ฉันมีลิงค์ดาวน์โหลดล่าสุด
    • ดาวน์โหลดและคลายซิป Chromedriver ไปยังตำแหน่งที่คุณต้องการ
    • ตัวอย่างเช่น: ~/chromedriver/chromedriver

เปิด~/.bash_profileด้วยเครื่องมือแก้ไขและเพิ่ม:

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

เปิดหน้าต่างเทอร์มินัลใหม่ ta-da 🎉


0

ฉันมีปัญหานี้กับ Webdriver 3.8.0 (Chrome 73.0.3683.103 และ ChromeDriver 73.0.3683.68) ปัญหาหายไปหลังจากฉัน

pip install -U selenium

เพื่ออัพเกรด Webdriver เป็น 3.14.1


0

ตรวจสอบเส้นทางของไดรเวอร์ Chrome ของคุณซึ่งอาจไม่ได้รับจากที่นั่น เพียงคัดลอกวางตำแหน่งไดรเวอร์ลงในรหัส


-3

(สำหรับผู้ใช้ Mac) ฉันมีปัญหาเดียวกัน แต่ฉันแก้ไขได้ด้วยวิธีง่ายๆนี้: คุณต้องใส่ chromedriver.exe ในโฟลเดอร์เดียวกันกับสคริปต์ที่คุณเรียกใช้และกว่าใน pyhton เขียนคำสั่งนี้:

นำเข้าระบบปฏิบัติการ

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


2
โซลูชันที่คุณเสนอนั้นเหมือนกับผู้ใช้รายอื่น โปรดใส่ใจกับคำตอบอื่น ๆ ก่อนโพสต์
Nikita Kniazev

@walid_data ไม่พูดสิ่งนี้เพื่อชี้ให้เห็นว่าอาจเป็นปัญหาเฉพาะหน้า Windows หรือไม่
benc
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.