at backyard

Color my life with the chaos of trouble.

インストールされているChromeのversionに応じたchromedriverを勝手にインストールしてくれるwebdriver-managerが便利

SeleniumからChromeを扱う時、現在PCにインストールされているChromeのversionに応じたchromedriverを自身でインストールしておく必要がある。

ただ、Chromeのversionは定期的に新しくなるため、Chromeのversionが更新された際には対応するChromeのdriverをセットアップする必要がある。

当然ながらこの作業は面倒である。
というわけで、この課題を解決するためのツールとして今回備忘録として残す webdriver-manager が登場する。
(なお、似たようなツールは他にもあるようだが、私はまだこれしか試していない)

github.com

試してみた際のコードサンプルを下記に貼る。

from selenium import webdriver
from webdriver_manager.chrome import ChromeDriverManager
from time import sleep

# ここで対応するchromedriverをインストールして `webdricer.Chrome` に渡している
driver = webdriver.Chrome(ChromeDriverManager().install())
driver.get('https://www.google.com/')

sleep(5)

search_form = driver.find_element_by_name("q")
search_form.send_keys("積乱雲")
search_form.submit()

sleep(5)

driver.save_screenshot("./screenshot.png")
driver.quit()

このように既存のコードをほとんど変えることなく適用できる点が良いと思った。

ちなみに下記のようにoptionsを渡しているケースもある。

options = webdriver.ChromeOptions()

# options.add_argumentを用いて設定
# ・
# ・

driver = webdriver.Chrome(options=options)

その場合は下記のように第一引数に ChromeDriverManager().install() を渡すようにする。

options = webdriver.ChromeOptions()

# options.add_argumentを用いて設定
# ・
# ・

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

これらのコードを実行すると、下記のようなログが吐き出される。

====== WebDriver manager ======
Current google-chrome version is 96.0.4664
Get LATEST chromedriver version for 96.0.4664 google-chrome
There is no [mac64] chromedriver for browser  in cache
Trying to download new driver from https://chromedriver.storage.googleapis.com/96.0.4664.45/chromedriver_mac64.zip
Driver has been saved in cache [/Users/{ユーザ名(※マスクしている)}/.wdm/drivers/chromedriver/mac64/96.0.4664.45]

ログにあるとおり現在のChromeのバージョンは 96.0.4664 で、こちらに対応するchromedriverをダウンロードしている。

ダウンロードしたdriverは ~/.wdm/drivers/chromedriver/mac64/96.0.4664.45 に入り、こちらのディレクトリ内に該当する chromedriverとダウンロードしてきたZIPと思われる driver.zip が格納されているのを確認した。

また、~/.wdm/drivers.json ではダウンロードしてきたchromedriverに関する情報を管理していると思われる。

ここらへんの詳細はソースコード、またはドキュメントに記載があればそちらを確認してみるのが良さそうだ。

リポジトリのREADMEには設定に関する内容も記載されていたので、興味がある方はそちらも一読してみるとよいだろう。