エラーメッセージ:「パスで「chromedriver」実行可能ファイルを使用できる必要があります」


171

私はpythonでセレンを使用していて、次のサイトから私のWindowsコンピューター用のchromedriverをダウンロードしました: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

しかし-上で説明したように、実行可能ファイルはパスにあります(!)...ここで何が起こっているのでしょうか。


19
chromedriver.exePythonスクリプトと同じディレクトリにコピーしてみてください。
Malik Brahimi 2015

4
Chocolatey経由でインストールすると、パスに追加されますchoco install chromedriver
WhatIsHeDoing 2017年

pycharmでこの問題が発生した場合、再起動すると解決します
Charles Chow

ImNtの回答に同意します。virtualenvを使用している人のために追加したいのですが、次の例の形式を使用して、管理者としてpythonをvenvファイルで実行する必要があります:driver = webdriver.Chrome(r'C:/ Users / michael / Downloads / chromedriver_win32 /chromedriver.exe ')
Pineda

@MalikBrahimi私はどこでもこの解決策を探していましたが、あなたのコメントが見つかるまで、実際にはどれも機能しませんでした。
どうも

回答:


177

実際にPATHにあるかどうかをテストできchromedriverます。cmd を開いて入力し(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を起動しています」が表示されました。「ローカル接続のみが許可されています。」も登場。...しかし、これは大丈夫だと思いますか?....疑問に思ったことの1つは、次のとおりです。Webサイトでは、使用可能なchromedriverの32ビットバージョンしかありませんでした....しかし、これは64ビットウィンドウで正常に動作するはずですよね。
–steady_progress

@steady_progressええ、大丈夫です。そして、これは64ビットWindowsで動作します。自分で使っています。セレンのバージョンが問題を引き起こしているのではないかと思いますか?あなたはどちらをインストールしましたか?を使用してインストールしましたpipか?
lmNt 2015

回答で述べたように、Webドライバーを呼び出すときにドライバーへの直接パスを使用してみましたか?同じエラーで失敗しましたか?
lmNt 2015

4
OSに関係なく、PATHにWebドライバーを追加するときは、実行ファイルではなく、Webドライバーが格納されているディレクトリのみを含めます。例:PATH = $ PATH:/ path / to / webdriver / chromedriverではなく、PATH = $ PATH:/ path / to / webdriver / folder。さらに、PATHを使用すると、場所をwebdriver.Chrome()呼び出しに渡すよりもはるかに移植性が高くなります。コードが実行される場所では常にPATHが正しく設定されていると想定できますが、ファイル構造が同じように設定されているとは想定できないためです。 。
アブラムシ

2
同じソリューションを使用しようとしましたが、次のエラーが発生しました:WebDriverException:メッセージ: 'chromedriver.exe'実行可能ファイルに誤った権限がある可能性があります。sites.google.com/a/chromium.org/chromedriver/home
Yogesh

150

バイナリをダウンロードして手動でパスを構成することにより、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.7のとき、なぜ誰かが3.6から何かに従うのかを十分に尊重します。次回は3.6だと明言しておくとよいでしょう....ありがとう
AzySırFeb

5
それが最新の状態にとどまるので、これはあまりにも素晴らしいです
レスリーAlldridge

1
このソリューションの良い点は、特定のパス設定に基づく他のソリューションよりも柔軟性が高く、複数のマシンでスクリプトを使用するという点で非現実的であるということです。
イブラヒム

14

pycharmコミュニティエディションでも同じ状況です。そのため、cmdについては、パス変数をリロードするためにideを再起動する必要があります。IDEを再起動すると、問題ないはずです。


2
ありがとう。Visual Studioでも同じ問題が発生しました。IDEを再起動しただけで動作しました:)ありがとう
DollarAkshay

私のためにも働いた。
CARTOS

13

Linux(UbuntuまたはDebian)の場合:

sudo apt install chromium-chromedriver

macOSにhttps://brew.sh/をインストールしてから、

brew cask install chromedriver

次に、driver = webdriver.Chrome( '/ usr / lib / chromium-browser / chromedriver').. $ PATHを変更せずに使用
錬金術

@alchemy本当にそうする必要がありますか?覚えていますが、driver = webdriver.Chrome()うまくいきました。
ボリス

こんにちはボリス、はい、なぜだかわかりません。PATHに追加した後でも、それなしでは機能しませんでした。パスを正しく設定する方が良いと確信していますが、Chromedriverですばやく1つのことを実行するだけで済みます
錬金術

9

パス文字列を追加する必要がありrます。生の文字列の場合は、文字列の前の文字から始めます。私はこの方法でテストしましたが、うまくいきました。

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

3

PATH環境変数をいじるのを避けるために、このスレッドの将来の読者のためのいくつかの追加の入力/説明。Windowsレベルの変数とWindowsシステムの再起動:(Chromeに該当するhttps://stackoverflow.com/a/49851498/9083077からの私の回答のコピー):

(1)(このスレッドで前述したように)chromedriverをダウンロードし、(解凍された)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)(参照された回答の)サンプルコードが指定されたURLのFirefoxブラウザーを開くのに約5秒かかる場合があります。(2)指定されたURLで実行されているサーバーがないか、文字列 'Django'を含むタイトルのページを提供しているサーバーがない場合、pythonコンソールは次のエラーを表示します。browser.title AssertionErrorのassert 'Django'


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を解凍するときは、後で追跡できるように正確な場所を指定してください。以下では、OSに適切な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、その公式Webサイトからダウンロードして、この.exeファイルをC:\Python27\Scriptsディレクトリに保存できます。次に、このパスを環境変数として記述します。C:\Python27\Scripts\chromedriver.exe

コンピューターを再起動し、同じテストケースを再度実行します。この問題は再び発生しません。


2

よると、命令、あなたがChromeDriverへのパスを含める必要があるときにインスタンス化webdriver.Chrome例えば:

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

これらの指示を右にスクロールすると、「オプションの引数を指定しないと、パスが検索されます」というコメントがあります。ただし、少なくとも一部のバージョンのwebdriverは、パスで見つかったchromedriverをチェックし、それが「満足のいく」ものでない場合(間違ったバージョンなど)、それを使用しません(このパラメーターを設定して強制的に試行しない限り)。より良いバージョンのパスを検索し続け、見つからない場合は文句を言います。(「適切なchromedriverが見つかりません」の方が「no chromedriverが見つかりません」よりも良いメッセージでした。)
Silas S. Brown

2

パスにchromedriverを追加する前に、ブラウザと同じバージョンであることを確認してください。

そうでない場合は、バージョンを一致させる必要があります。Chromeを更新/ダウングレードし、Webドライバーをアップグレード/ダウングレードします。

可能な限りChromeのバージョンを更新し、Webドライバーを一致させることをお勧めします。

Chromeを更新するには:

  • 右上の3つの点をクリックします。
  • クリックhelp->About Google Chrome
  • バージョンを更新してChromeを再起動します

次に、互換性のあるバージョンをhttp://chromedriver.chromium.org/downloadsからダウンロードします

注:最新のchromedriverが常に最新バージョンのchromeと一致するとは限りません。

これをPATHに追加できます。

  1. コンピューターのどこかに新しいフォルダーを作成し、そこにWebドライバーを配置します。という名前のフォルダを作成しましwebdriversC:\Program Files

  2. フォルダパスをコピーします。私の場合はC:\Program Files\webdrivers

  3. 右クリックthis PC-> properties

ここに画像の説明を入力してください

  1. 右クリック Advanced System settings
  2. クリック Environment Variables
  3. System variables、をクリックしてpathedit
  4. クリック new
  5. 前にコピーしたパスを貼り付けます
  6. すべてのウィンドウで[OK]をクリックします

それでおしまい!私はpycharmを使用しましたが、再度開く必要がありました。多分それは他のIDEまたは端末と同じです。


1

PATHが正しく設定されていることを確認した後、コンピューターが再起動しない場合は、コンピューターを再起動してみてください。

私のWindows 7の場合、常にWebDriverException:Message:for chromedriver、gecodriver、IEDriverServerでエラーが発生しました。私は正しい道があると確信しています。コンピュータを再起動し、すべての作業


0

私の場合、chromedriverファイルをc:\ Windowsフォルダにコピーすると、このエラーは消えます。これは、windowsディレクトリがpythonドライバがchromedriverの可用性をチェックするパスにあるためです。


0

リモートインタープリターを使用している場合は、その実行可能なPATHが定義されているかどうかも確認する必要があります。私の場合、リモートDockerインタープリターからローカルインタープリターに切り替えると問題が解決しました。


0

私はあなたと同じ問題に遭遇しました。私はPyCharmを使用してプログラムを作成していますが、問題はOSではなくPyCharmでの環境設定にあると思います。スクリプト構成に移動し、環境変数のPATHを手動で編集することで問題を解決しました。これがお役に立てば幸いです!


もう1つのオプションは、chromedriverを/ usr / local / binに直接移動することです。パスを追加する必要はまったくありません
sia1998


0

最善の方法は、現在のディレクトリを取得して、残りのアドレスをそれに追加することです。このコードのように(WindowsではWord。Linuxでは、何か行pwdを使用できます): webdriveraddress = str(os.popen("cd").read().replace("\n", ''))+'\path\to\webdriver'


0

chromedriver.exeをダウンロードしたとき、PATHフォルダーC:\ Windows \ System32 \ chromedriver.exeに移動しただけで、まったく同じ問題が発生しました。

私にとっての解決策は、PATHのフォルダーを変更することだったので、同じPATHにあるPycharm Community binフォルダーに移動しました。例:

  • C:\ Windows \ System32 \ chromedriver.exe->例外を出しました
  • C:\ Program Files \ JetBrains \ PyCharm Community Edition 2019.1.3 \ bin \ chromedriver.exe->正常に動作しました

0

ロボットテストフレームワークとChrome 77を実行しているMac Mojaveでこの問題が発生しました。これで問題が解決しました。@Navarasu、私を正しい方向に向けてくれてありがとう。

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

次に、Pythonプロンプトで:

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

確かな最善の方法はここにあります:

chromedriverをダウンロードして解凍し、「chromedriver.exe」をC:\ Python27 \ Scriptsに配置します。ドライバーのパスを指定する必要はありません。

driver= webdriver.Chrome()

パスなどを追加する必要はありません


0

Chromeドライバーのパスを確認してください。そこから取得できない場合があります。ドライバーの場所をコピーしてコードに貼り付けるだけです。


-3

(Macユーザーの場合)同じ問題がありますが、この簡単な方法で解決しました:chromedriver.exeを実行したスクリプトと同じフォルダーに配置し、pyhtonでこの指示を書き込む必要があります。

OSをインポート

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


2
あなたが提案しているソリューションは、他のユーザーとまったく同じです。投稿する前に、他の回答に注意してください。
Nikita Kniazev

@walid_dataがWindowsのみの問題である可能性があることを指摘するためにこれを言っていませんか?
1
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.