今回は、SeleniumをChromeで使用する際に、ChromeとChromeDriverのバージョンを合わせる方法を解説します。
現在のChromeのバージョンを確認する
まず、現在使用しているChromeのバージョンを確認します。Google Chromeを開き、右上の3点マークを押下>ヘルプ>Google Chromeについて の順でクリックします。

バージョンが表示されました。私の環境では「バージョン: 113.0.5672.64(Official Build) (64 ビット)」と表示されています。

このバージョンと、ChromeDriverのバージョンを合わせる必要があります。その方法について以降で解説します。
【方法1】ChromeDriverをインストールする方法
「ChromeDriver」は、Google社が公式に提供している、Google Chromeを動かすためのドライバーです。こちらが最も定番な方法かと思います。
ダウンロードページからドライバーをダウンロードする
ダウンロードページ(https://chromedriver.chromium.org/downloads)にアクセスします。先ほどの手順で、私の環境ではバージョン113を使っていることが分かったので、ドライバーもバージョン113をダウンロードします。

ダウンロードしたドライバーを適切な場所へ配置する
ChromeDriverをどこに置いたとしても実行はできます。極論、ダウンロードフォルダのままでも問題ないです。
ただし、きちんと管理していないと、プロジェクトが増えていったときにどこにドライバーの実体があるのか分からなくなってしまうので、目的に応じて以下を参考に配置してください。
システム全体で同じバージョンを使えれば良い場合
システムのPATH環境変数に含まれる場所に置いてあげると、実行時にPATHを通す必要がありません。具体的には、以下のいずれかに置いてあげると良いでしょう。
%Path% |
---|
C:\Windows\system32 |
C:\Windows |
C:\Windows\System32\Wbem |
この場合、ソース内でパスを通す必要はありません。
プロジェクトごとに異なるバージョンのドライバーを使いたい場合
プロジェクトごとに異なるバージョンのドライバーを使いたい場合には、そのプロジェクトがあるフォルダに配置します。

上記のように直接exeだけ置いても良いですし、chromedriver>ChromeDriver.exeという構成でもOKです。
動作確認
以下のコードで動作確認をしてみます。以下は指定したWebページを開いて閉じるだけの簡単なコードです。
from selenium import webdriver
import time
options = webdriver.chrome.options.Options()
driver = webdriver.Chrome()
driver.get('https://prtn-life.com/blog/gpt4-api')
time.sleep(3)
driver.close()
これで問題なくWebページが開けばOKです。もし、「‘chromedriver’ executable needs to be in PATH」と出た場合には、明示的にChromeDriverの場所を記載して実行します。
driver = webdriver.Chrome(r'C:\Users\chaso\PythonProjects\ImageGrab\chromedriver')
寧ろ、プロジェクトごとにChromeDriverのバージョンを意図的に分けている場合は明示的に書いたほうが良いかもしれません。なぜなら、プロジェクト内にドライバーを配置していなくとも、他のプロジェクト内のドライバーを認識して動いてしまうことがあるためです。
ドライバーの更新方法
Chromeが更新されたタイミングで、現在のドライバーでは動かなくなります。そのような場合には、ドライバーを更新する必要があります。
ドライバーのダウンロード
前述のダウンロードページから、最新バージョンをダウンロードします。
ドライバーを置き換える
現在のドライバーを、新しいドライバーで置き換えます。「ChromeDriverをどこに置いたか忘れた」という場合は、フォルダ検索で探します。C直下とかだと時間がかかるので、見当がついている場合はもう少し絞って検索することをおすすめします。

「chromedriver.exe」を新しいものに置き換えたら更新完了です。
【その2】chromedriver-binaryを使う場合
次に、「chromedriver-binary」を使ってバージョンを揃える方法を紹介します。
chromedriver-binaryは、サードパーティのパッケージです。先ほど紹介したChromeDriverはChromeを自動操作するためのツールですが、chromedriver-binaryはツールそのものではありません。ChromeDriverのダウンロード+パスを通すというセットアップを自動でやってくれる助っ人のようなものと考えておけば良いと思います。
chromedriver-binaryをpipインストール
コマンドプロンプトからpipインストールします。以下、3通りの手順を載せていますので、目的に応じて適したものを実行してください。
最新バージョンをインストールする場合
pip install chromedriver-binary
このコマンドでは、最新バージョンのChromeDriverをインストールします。もし、Google Chromeのバージョンが最新ではない場合は、以下コマンドを実行してください。
Chromeのバージョンに自動で合わせる場合
pip install chromedriver-binary-auto
このコマンドでは、Google Chromeのバージョンに対応するドライバーを自動的にダウンロードします。
バージョンを指定してインストールする場合
バージョンを指定してインストールする際には、以下のようにバージョンを明記して実行します。
pip install chromedriver-binary == 91.0.4472.101.0
動作確認
以下のコードで動作確認してみます。
from selenium import webdriver
import chromedriver_binary # chromedriver_binaryをインポートしてパスを設定
import time
options = webdriver.chrome.options.Options()
driver = webdriver.Chrome()
driver.get('https://prtn-life.com/blog/gpt4-api')
time.sleep(3)
driver.close()
import chromedriver_binaryの役割
ChromeDriverをインストールしたときのソースコードと比べると、
import chromedriver_binary
が追加されています。これは、内部で以下のような処理がなされています。
- ChromeDriverの実行ファイルをパッケージ内にインストール
- 実行ファイルへのパスが自動的にPythonの環境変数PATHに追加される
- 2によって、ChromeDriverの実行ファイルを自動で見つけることができ、Google Chromeが起動される
つまり、chromedriver-binaryを使うと、プログラム実行時に自動でパスを通してくれているということです。
chromedriver-binaryを使う際、ChromeDriverの実体は、Pythonのsite-packages内にあります。これは、pip installした際に作成されます。

「import chromedriver_binary」によってここのパスが追加され、この中にあるドライバが動きます。
ChromeDriverのアップデート方法
Google Chromeが更新された場合には、以下コマンドでアップデートします。
pip install --upgrade --force-reinstall chromedriver-binary-auto
参考:https://pypi.org/project/chromedriver-binary-auto/
chromedriver-binaryのアンインストール方法
pip uninstall chromedriver-binary
このコマンドを実行することで、site-packagesディレクトリ内のchromedriver_binaryフォルダ、その中に格納されているchromedriver.exeも削除されます。
結局、どっちを使えばいいの?
ChromeDriverとGoogle Chromeのバージョンを揃える方法について、
- ChromeDriverを直接インストールする方法
- chromedriver-binaryを使う方法
の2つを紹介しました。結局どちらを使えば良いかは、以下を参考にしていただければと思います。
ChromeDriverがおすすめな場合
- テスト環境や動作確認などで、プログラムごとに使用するバージョンを指定したい場合
- 自由にセットアップしたい場合(パスを通せばどこに配置しても良い)
- 常に最新のバージョンを使いたい、更新されたらすぐに反映したい場合
chromedriver-binaryがおすすめな場合
- 手動でダウンロードや環境変数の追加をせずセットアップしたい場合
- 初心者の方
- 開発環境を汚したくない場合
個人的には、特にテストとかでなく普通に使う分にはchromedriver-binaryを使ったほうが良さそうだと思いました。

↑こちらは先ほども載せた画像ですが、「chromedriver」と検索しただけで複数見つかって、なかには現在使っていないものもありました。このように、過去のドライバーが残っていると、意図せず過去のドライバーを起動しようとして「バージョン古いよ」とエラーが出る可能性があります。
まとめ
今回は、SeleniumでChromeとChromedriverのバージョンを確認・そろえる方法について解説しました。
直接ドライバーをダウンロードする方法、Pythonの便利なパッケージでドライバーのインストール・パス追加をする方法について紹介しました。本当は、自動でバージョン更新する方法を書こうと思っていたのですが、書いているうちに手動更新の方法だけで一つの記事になってしまいました。。
自動でChromeDriverが更新できればベストではありますが、テスト環境だったり、勝手にバージョンアップされたら困るという場合もあるかと思います。なので、本記事が誰か一人でも役に立った!と思ってもらえたら嬉しいです。
次回こそは、自動更新の記事を書きます!

コメント