LoginSignup
10
16

More than 1 year has passed since last update.

[Python] Seleniumで各ブラウザのDriverを自動取得

Last updated at Posted at 2021-12-10

はじめに

seleniumを使っているとブラウザドライバーの設定が結構めんどくさく感じている方もいると思うので、自動でブラウザのバージョンにあったドライバーを取得してくれるライブラリをご紹介します。

webdriver-manager

使い方はとても簡単です。

pip install webdriver-manager
# seleniumをインストールしていない人は以下も
# pip install selenium

複数のブラウザドライバーをサポートしています。

test_selenium.py
from selenium import webdriver

# Chromeを使う場合
from webdriver_manager.chrome import ChromeDriverManager
driver = webdriver.Chrome(ChromeDriverManager().install())

# Chromiumを使う場合
from webdriver_manager.chrome import ChromeDriverManager
from webdriver_manager.utils import ChromeType
driver = webdriver.Chrome(ChromeDriverManager(chrome_type=ChromeType.CHROMIUM).install())

# Firefoxを使う場合
from webdriver_manager.firefox import GeckoDriverManager
driver = webdriver.Firefox(executable_path=GeckoDriverManager().install())

# IEを使う場合
from webdriver_manager.microsoft import IEDriverManager
driver = webdriver.Ie(IEDriverManager().install())

# Edgeを使う場合
from webdriver_manager.microsoft import EdgeChromiumDriverManager
driver = webdriver.Edge(EdgeChromiumDriverManager().install())

# Operaを使う場合
from webdriver_manager.opera import OperaDriverManager
driver = webdriver.Opera(executable_path=OperaDriverManager().install())

# Opera browserが「C:/Program Files」あるいは「C:/Program Files (x86)」以外にインストールされている場合
from webdriver_manager.opera import OperaDriverManager
options = webdriver.ChromeOptions()
options.add_argument('allow-elevated-browser')
options.binary_location = "C:\\Users\\USERNAME\\FOLDERLOCATION\\Opera\\VERSION\\opera.exe"
driver = webdriver.Opera(executable_path=OperaDriverManager().install(), options=options)

設定

GH_TOKEN

webdriver_managerはいくつかのドライバを公式のGithubリポジトリからダウンロードしているのですが、非認証ユーザーに対しては1時間に60リクエストまでといった制限がかかります。認証するために環境変数にgithub tokenを設定しておくことができます。

bash
$ export GH_TOKEN = your_access_token

あるいは

test_selenium.py
import os
os.environ['GH_TOKEN'] = your_access_token

WDM_LOG_LEVEL

webdriver_managerを使って実行するとコンソール上にwebdriverのダウンロードに関するログが出力されるのですが、出力を目障りな場合は出力されないようにします。

test_selenium.py
import os
os.environ['WDM_LOG_LEVEL'] = '0'

あるいは

test_selenium.py
ChromeDriverManager(log_level=0).install()

WDM_PRINT_FIRST_LINE

webdriver_managerを使って実行するとコンソールの1行目にデフォルトで空行が入りますが、目障りな場合は消すことができます。

test_selenium.py
import os
os.environ['WDM_PRINT_FIRST_LINE'] = 'False'

あるいは

test_selenium.py
ChromeDriverManager(print_first_line=False).install()

cache_valid_range

ドライバのcacheの有効期間はデフォルトで1日ですが、このパラメータを変更することができます。

test_selenium.py
ChromeDriverManager(cache_valid_range=2).install()

参考

webdriver-manager

まとめ

以前までchromedriver_binaryを使用していたので、定期的にバージョンを手動で更新しなくてはなりませんでしたが、これがあると結構楽になりそうですね。

10
16
0

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
10
16