はじめに
今回はSeleniumを使った時にChromeDriverのファイルが見つからずエラーになった時についての作業メモです。
同様にChrome driverのバイナリファイルが見つからないエラーに遭遇した方の参考になればと思います。
エラーの原因と対処法
エラー
まず発生したエラーですが、
selenium.common.exceptions.WebDriverException: Message: unknown error: cannot find Chrome binary
というものです。
日本語で訳すと
「Selenium.common.exceptions.WebDriverException: メッセージ: 未知のエラー: Chromeのバイナリが見つかりません」
となります。
ファイルが見つからないことによるエラーです。
原因とサンプルソース
原因
このエラーは、SeleniumがChromeブラウザの実行ファイル(バイナリ)を見つけることができない場合に発生します。以下の状況が考えられます:
- Chromeがインストールされていない。
- Chromeがインストールされているが、そのパスがSeleniumに認識されていない。
エラーが発生するソースコード
次のソースコードはエラーが発生する例です。
ここでは前提としてChromeのパスが正しくないかダウンロードされていない事とします(されていると正常に動くため)
from selenium import webdriver
# Chromeのパスが正しく指定されていないか、またはChromeがインストールされていない場合、
# 以下のコードはエラーを引き起こします。
driver = webdriver.Chrome()
driver.get("https://www.example.com")
driver.quit()
これを実行すると
・
(省略)
・
raise exception_class(message, screen, stacktrace)
selenium.common.exceptions.WebDriverException: Message: unknown error: cannot find Chrome binary
とエラーになります
修正したソースコード
修正したソースコードは次の通りです。
4行目はパスの指定が既に正しく行われている場合は省略可能です。
from selenium import webdriver
options = webdriver.ChromeOptions()
options.binary_location = "/path/to/chrome" # Chromeのバイナリへの正確なパスを指定します。
driver = webdriver.Chrome(options=options)
driver.get("https://www.example.com")
driver.quit()
ファイルパスの探し方は次の「Chromed Driverのパスの確認方法」を参照
ChromeDriverのパスの確認方法
Chromeのインストールパスを調べる方法はOSごとに異なります。以下にWindowsとMacの例を表示します。
Windows
一般的に、Chromeは以下のディレクトリにインストールされています:
C:\Program Files (x86)\Google\Chrome\Application\chrome.exe
または
C:\Program Files\Google\Chrome\Application\chrome.exe
エクスプローラを開いて上記のパスに移動します。
別の検索方法として、コマンドプロンプトを開いて、dir chrome.exe /s コマンドを実行して、システム全体で chrome.exe を検索することもできます。
Mac
Macでは、Chromeは通常以下のディレクトリにインストールされています:
/Applications/Google Chrome.app/Contents/MacOS/Google Chrome
これを確認するには、Finderを開いて「アプリケーション」フォルダに移動し、「Google Chrome」アプリケーションを探します。右クリック(またはコントロールクリック)して「パッケージの内容を表示」を選択し、次に「Contents」、そして「MacOS」フォルダを開きます。ここで「Google Chrome」という名前の実行ファイルを見ることができます。
以下のコマンドでファイルの場所を探すことも可能です
which chromedriver
もしくは、ターミナルを開いて find / -name "Google Chrome" 2>/dev/null
コマンドを実行して、システム全体で “Google Chrome” を検索することもできます。
ChromeDriverのパスの追加方法
システムの環境変数にパスを追加することで、コマンドラインやスクリプトからそのパス内の実行ファイルを直接呼び出すことができます。以下、WindowsとMacでの手順を示します。
Windowsの場合:
仮に、Chrome Driverが C:\Program Files (x86)\Google\Chrome\Application\
にあるとします。
環境変数を追加・変更する手順は次の通りです:
- コンピュータの[スタート]メニューをクリックして、[コンピュータ]を右クリックし、[プロパティ]を選択します。
- 左ペインの[システムの詳細設定]をクリックします。
- [詳細]タブを選択し、[環境変数]をクリックします。
- [システムの環境変数]セクションで[Path]を選択し、[編集]をクリックします。
- [変数の値]の最後に
;C:\Program Files (x86)\Google\Chrome\Application\
を追加します(既存のパスと新しいパスをセミコロンで区切ります)。 - すべてのダイアログボックスを[OK]で閉じて、変更を保存します。
Macの場合:
仮に、Chrome Driverが /Applications/Google Chrome.app/Contents/MacOS/
にあるとします。
環境変数を追加する手順は次の通りです:
- ターミナルを開きます。
- 以下のコマンドを実行して、bashの場合の環境変数の設定ファイル(
.bash_profile
または.bashrc
)を開きます(使用しているシェルに応じて適切なファイル名を選択してください。例えば、zshの場合は.zshrc
になります):nano ~/.bash_profile
- 以下の行をファイルの最後に追加します:
export PATH="/Applications/Google Chrome.app/Contents/MacOS/:$PATH"
- 変更を保存してファイルを閉じるために、Ctrl + O で保存して、Ctrl + X でnanoエディタを終了します。
- ターミナルを閉じて再開するか、または
source ~/.bash_profile
を実行して、変更をすぐに適用します。
さいごに
今回はSeleniumでChromeDriverのバイナリファイルが見つからないケースについてでした。
OSなどによりフォルダの場所や追加方法が異なるのでこういった設定は難しいですね。
この記事がお役に立ったのなら嬉しいです。
最後までお読みいただきありがとうございます。