インストールされているChromeのversionに応じたchromedriverを勝手にインストールしてくれるwebdriver-managerが便利
SeleniumからChromeを扱う時、現在PCにインストールされているChromeのversionに応じたchromedriverを自身でインストールしておく必要がある。
ただ、Chromeのversionは定期的に新しくなるため、Chromeのversionが更新された際には対応するChromeのdriverをセットアップする必要がある。
当然ながらこの作業は面倒である。
というわけで、この課題を解決するためのツールとして今回備忘録として残す webdriver-manager
が登場する。
(なお、似たようなツールは他にもあるようだが、私はまだこれしか試していない)
試してみた際のコードサンプルを下記に貼る。
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には設定に関する内容も記載されていたので、興味がある方はそちらも一読してみるとよいだろう。