Selenium オブジェクトでブラウザ操作を行うためのWebDriverのダウンロードを行います。
WebDriver.Start メソッドでブラウザを起動する直前に記述することで、ブラウザのバージョンに合ったドライバーをダウンロードします。
直近にダウンロードしたブラウザのバージョンをINIファイルに記録しておくことにより、現在のブラウザのバージョンと同じ場合はダウンロード処理を行いません。
バージョンが同じでもドライバーの再ダウンロードを行いたい場合はforceにTrueを指定します。
- 構文
- WebDriverDownload.Chrome( bit64, force )
WebDriverDownload.Firefox( force )
WebDriverDownload.MsEdge( force )
- 引数
- bit64 必須
- Chromeブラウザが64bitの場合はTrue、32bitの場合はFalseを指定。省略した場合、インストール先のフォルダパスから判断。
- force 省略可
- 現在インストールされているドライバーとバージョンが一致しても強制的にインストール処理を行う場合、Trueを指定
- 戻り値
プログラム
解説
- 2行目
- 3行目
- SeleniumBasicがインストールされているパスをfolderspecに代入します。
- 4,14行目
- Google Chromeドライバーのダウンロード処理をする関数。
- 5行目
- ChromeBrowserVersion関数でChromeブラウザのバージョンを取得しbrowserVersionに代入します。
- 6行目
- WebDriverVersion.iniのChromeセクション、versionキーの値とbroswerVersionの値を比較し、バージョンが違うもしくはforceがTrueの場合は以下に続く処理を続けます。バージョンが同じ、もしくはforceがFalseの場合は処理を中断します。
- 7行目
- bit64の値がTrueならば64、Falseならば32をbitに代入します。
- 9行目
- ChromeDriverVersion関数を実行し、browserVersionの値からダウンロードするドライバーのバージョンを生成しdriverVersionに代入します。
- 10行目
- ChromeDriverURL関数を実行し、driverVersionとbitの値からドライバーのURLを生成し、driverURLに代入します。
- 12行目
- InstallChromeDriver関数を実行し、driverURLとbitの値からChromeのWebDriverのインストール処理を実行します。
- 15-23行目
- Chromeブラウザのバージョンを返す関数です。レジストリのHKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\App Paths\chrome.exe\PathというキーからChromeブラウザがインストールされているパスを取得しpathに代入します。このときエラーが発生した場合はChromeブラウザがインストールされていないと判断し処理を中断します。Chromeブラウザのパスからコマンドプロンプトを使いバージョンを取得します。
- 24,36行目
- Chromeブラウザのバージョンから対応するWebDriverのバージョンを取得する関数です。
- 25行目
- バージョンからメジャーバージョンの部分を取得しmajorに代入します。
- 26-30行目
- メジャーバージョンが115以降ならばhttps://googlechromelabs.github.io/chrome-for-testing/LATEST_RELEASE_" + major、115より前ならhttps://chromedriver.storage.googleapis.com/LATEST_RELEASE_" + majorをurlに代入します。
- 31-35行目
- urlを開き、Webページのテキスト全体を戻り値として返します。
- 37-47行目
- Chromeブラウザのバージョンとビット数からダウンロードするWebDriverのURLを取得します。
- 48,56行目
- Chromeドライバーのインストール処理を行う関数です。
- 49行目
- ダウンロードするZIPファイルのファイル名をchromedriver.zipにします。
- 50行目
- driverURLに指定したURLのファイルをダウンロードします。folderspecがダウンロード先のフォルダ名、filenameがファイル名です。ダウンロードに成功した場合、そのZIPファイルを解凍します。
- 51行目
- 解凍したZIPファイルからchromedriver.exeのパスをpathに代入します。
- 52-55行目
- ZIPファイルからpathのファイルをfolderspecにコピーし、ZIPファイルを削除します。
WebDriverとは
WebDriverはWebページの操作を自動化するためのインターフェイスです。Seleniumというブラウザを自動操作するためのライブラリとセットで使うため、Selenium オブジェクトを参考に事前にインストールしておいてください。
Seleniumを利用して書かれたプログラムはWebDriverを経由してブラウザの操作を行うのですが、ブラウザやそのバージョンに対応するWebDriverを用意する必要があります。そのためブラウザのアップデートでバージョンが変わるたびにWebDriverもインストールし直さなければならないため手間がかかります。WebDriverDownloadモジュールはそのWebDriverのダウンロード・インストールの処理を自動で行うためのプログラムです。
WebDriverのダウンロード
WebDriverをダウンロードする手順はブラウザごとに異なるためそれぞれ以下に示します。
Chrome
Chromeはブラウザのバージョンによってダウンロード先が異なります。
Ver.115以降(最新版)
Chrome for Testing availabilityを開いて一番上にある表のCannelの列のStable(安定版)、Beta(ベータ版)、Dev(デベロッパー版)、Canary(カナリア版)の中からStableをクリックします。
リンクを選択するとページ内でStableの表がある位置に移動するので、Binary列にあるchromedriverの中からChromeブラウザのビット数に合わせて32bitならwin32、64ビットならwin64のどちらかに記載しているURLをコピー&ペーストして開きZIPファイルをダウンロードします。
Ver.115以降(特定のバージョン)
Ver.115以降の特定のバージョンのWebDriverをダウンロードするにはhttps://googlechromelabs.github.io/chrome-for-testing/known-good-versions-with-downloads.jsonのJSONファイルからWebDriverがあるURLを探し出します。
以下はリンク先のJSONファイルの一部を整形したものです。versions配列にはバージョンごとのデータが格納されています。downloadsキー内のchrome配列がOSごとのデータで、Windowsで32bitの場合はplatformキーがwin32、64bitの場合はplatformキーがwin64のurlキーの値がWebDriverのダウンロード先のURLです。
このURLをブラウザのアドレスバーに貼り付けるなどして開き、ZIPファイルをダウンロードします。
Ver.114以前
Downloads | ChromeDriver | Chrome for Developersを開き、Chromeブラウザと対応するバージョンのWebDriverを選択します。
ChromeブラウザのVer.70〜114のバージョンに対応しています。Ver.82はブラウザのリリース自体がキャンセルされたのでドライバーもありません。
ダウンロードするWebDriverのバージョンは、以下の<メジャーバージョン>にブラウザのメジャーバージョンを代入しリンクを開くことで確認できます。
ブラウザのバージョンが70.0.3538.110の場合、 メジャーバージョンは一つ目のピリオドまでの数字で70となり以下のようになります。
このURLを開いてダウンロードするWebDriverのバージョンを取得します。例えば上記のURLの場合、70.0.3538.97というバージョンが取得されます。
https://chromedriver.storage.googleapis.com/index.htmlの項目の中からLATEST_RELEASE_<メジャーバージョン>のファイルを選択することでも確認できます。
次にWebDriverのバージョンからWebDriverをダウンロードするためのURLを生成します。
WebDriverのバージョンが70.0.3538.97の場合、URLは以下のようになります。
このURLを開くとブラウザのバージョンに対応するchromedriver.exeのZIPフォイルがダウンロードされます。
WebDriverのインストール
ダウンロードしたZIPファイル(chromedriver-win32.zip、chromedriver-win64.zip)を解凍しフォルダ内にあるchromedriver.exeをSeleniumをインストールしているフォルダ(%LOCALAPPDATA%\SeleniumBasic\)に移動することでChromeブラウザを起動できるようになります。
Chromeのインストール先のフォルダ
Ver.85より前からChromeをインストールしていた場合、64bitでも32bitと同じC:\Program Files (x86)\にインストールされています。
bit64の引数を省略すると正しく判定できない場合があるので、正しくドライバーがインストールできない場合はブール値を指定してください。
使い方
ChromeブラウザのWebDriverをダウンロード
ChromeブラウザとWebDriverのバージョンが一致しない場合、Chromeブラウザ(64ビット)のWebDriverをダウンロードします。バージョンが一致している場合ダウンロード処理は行いません。
ChromeブラウザとWebDriverのバージョンが一致しない場合、Chromeブラウザ(32ビット)のWebDriverをダウンロードします。バージョンが一致している場合ダウンロード処理は行いません。
FirefoxブラウザのWebDriverをダウンロード
FirefoxブラウザとWebDriverのバージョンが一致しない場合、FirefoxブラウザのWebDriverをダウンロードします。
Microsoft EdgeブラウザのWebDriverをダウンロード
Microsoft EdgeブラウザとWebDriverのバージョンが一致しない場合、EdgeブラウザのWebDriverをダウンロードします。

