27
28

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 1 year has passed since last update.

【Selenium】webdriver-managerのおかげでChrome Driverのバージョンを気にしなくてよくなった話

Last updated at Posted at 2021-03-18

#はじめに

私は現在コンテンツ制作の現場に所属しています。
日々コンテンツを制作または更新し、WordPressにアップしていきます。

基本は創作活動なのですが、たまに作業でしかないタスクが発生することがあります。

  • 数百件の外部リンクをWordPressにアップする
  • リンク先のサイト構成の変更に伴い数百件の外部リンクのURLを変更する
  • 数百件のコンテンツのアクセスレベルを変更する

これらは人間がやる必要のない仕事なので、Pythonで自動化してきました。
具体的には変更したい内容をcsvにまとめて、その内容をもとにSeleniumでChrome Driverを起動し、ブラウザ上でWordPressの内容を更新するといった流れです。

作成したツールはPythonがわからない人でも扱えるようにPyinstallerでexeファイル化してメンバーに配布していました。

しかし問題も抱えていました。

  • Google Chromeがバージョンアップするたびに対応するChrome Driverを入れ替えて配布し直す必要がある
  • exe内にChrome Driverを内包させているのでファイルサイズが大きくなる

この問題を解決してくれたのがこのライブラリです。

webdriver-manager

webdriver-manager

このライブラリを使うと、プログラム実行時に現在のGoogle Chromeのバージョンを確認し、
自動で適切なChrome Driverをあてて実行してくれます。

なので、定期的にバージョンの確認をしなくていいどころか、
そもそもchromedriver.exeを用意する必要すらなくなります。

使い方もすごく簡単です。

webdriver-manager導入前の書き方

***.py
from selenium import webdriver

driver = webdriver.Chrome(resource_path('chromedriver.exe'))
driver.get('https://www.xxx.com/')

resource_pathは気にしないでください。pyinstallerでchromedriverもexeファイルに内包させるために必要になった記述です。

webdriver-manager導入後

pip install webdriver-managerでインストールしたあとに

***.py
from selenium import webdriver
from webdriver_manager.chrome import ChromeDriverManager

driver = webdriver.Chrome(ChromeDriverManager().install())
driver.get('https://www.xxx.com/')

こんな感じで数行書き換えるだけです。

ヘッドレスなどのオプションをつけたい場合は

***.py
from selenium import webdriver
from selenium.webdriver.chrome.options import Options
from webdriver_manager.chrome import ChromeDriverManager

options = Options()
options.add_argument('--headless')

driver = webdriver.Chrome(ChromeDriverManager().install(), options=options)
driver.get('https://www.xxx.com/')

このように特に独自のルールはなく、
通常通り第二引数にoptionを指定してあげればOKです。

たったこれだけでchrome driverの呪縛から開放されました。
当然のことながらpyinstallerで作成したexeファイルも軽くなりました。

#まとめ

もし定期的に発生するchromedriverのバージョン違いエラーで悩んでる方がいれば、
webdriver-managerを試してみてください。

27
28
2

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
27
28

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?