【Python】seleniumでSessionNotCreatedException:This version of ChromeDriver only supports Chrome version~とエラーが出る場合の解決方法を解説!

selenium3またはselenium4を使ってスクレイピングや操作自動化をしているけど、少し経つとブラウザのバージョンが自動的に上がってエラーが出るので、それに合わせたドライバーを毎回ダウンロードしていませんか?
今回は、そんな手間をなくすライブラリを紹介します。
WebDriverを自動更新するwebdriver_managerをインストールしよう!
webdriver_managerは、ブラウザのバージョンに合わせたドライバーのダウンロード作業を自動で行ってくれます。
まずは、インストールする必要があります。
pip install webdriver-manager参考までに、私がインストールした時点でのバージョンは3.5.4でした。
Successfully installed~上記のようにインストールに成功しましたと出たら成功です。
対応しているブラウザ
使い方を見る前に、対応しているブラウザは以下の通りです。
- Chrome
- Chromium
- Brave
- Firefox
- IE
- Edge
- Opera
では、それぞれのブラウザでの自動ダウンロードするためのコードを見ていきましょう。
各ブラウザでのコード
例えばchromeなら、これまでは次のようなコードだったと思います。
from selenium import webdriver
driver = webdriver.Chrome("driver_path")今回はこの部分を変えることでエラーをなくします。
では、各ブラウザでの変更したコードを見ていきます。
Chrome
selenium 3の場合
from selenium import webdriver
from webdriver_manager.chrome import ChromeDriverManager
# 自動でバージョンに合ったドライバーをインストールする
driver = webdriver.Chrome(ChromeDriverManager().install())selenium 4の場合
from selenium import webdriver
from selenium.webdriver.chrome.service import Service as ChromeService
from webdriver_manager.chrome import ChromeDriverManager
# 自動でバージョンに合ったドライバーをインストールする
driver = webdriver.Chrome(service=ChromeService(ChromeDriverManager().install()))Chromium
selenium 3の場合
from selenium import webdriver
from webdriver_manager.chrome import ChromeDriverManager
from webdriver_manager.core.utils import ChromeType
driver = webdriver.Chrome(ChromeDriverManager(chrome_type=ChromeType.CHROMIUM).install())selenium 4の場合
from selenium import webdriver
from selenium.webdriver.chrome.service import Service as ChromiumService
from webdriver_manager.chrome import ChromeDriverManager
from webdriver_manager.core.utils import ChromeType
driver = webdriver.Chrome(service=ChromiumService(ChromeDriverManager(chrome_type=ChromeType.CHROMIUM).install()))Brave
selenium 3の場合
from selenium import webdriver
from webdriver_manager.chrome import ChromeDriverManager
from webdriver_manager.core.utils import ChromeType
driver = webdriver.Chrome(ChromeDriverManager(chrome_type=ChromeType.BRAVE).install())selenium 4の場合
from selenium import webdriver
from selenium.webdriver.chrome.service import Service as BraveService
from webdriver_manager.chrome import ChromeDriverManager
from webdriver_manager.core.utils import ChromeType
driver = webdriver.Chrome(service=BraveService(ChromeDriverManager(chrome_type=ChromeType.BRAVE).install()))Firefox
selenium 3の場合
from selenium import webdriver
from webdriver_manager.firefox import GeckoDriverManager
driver = webdriver.Firefox(executable_path=GeckoDriverManager().install())selenium 4の場合
from selenium import webdriver
from selenium.webdriver.firefox.service import Service as FirefoxService
from webdriver_manager.firefox import GeckoDriverManager
driver = webdriver.Firefox(service=FirefoxService(GeckoDriverManager().install()))IE
selenium 3の場合
from selenium import webdriver
from webdriver_manager.microsoft import IEDriverManager
driver = webdriver.Ie(IEDriverManager().install())selenium 4の場合
from selenium import webdriver
from selenium.webdriver.ie.service import Service as IEService
from webdriver_manager.microsoft import IEDriverManager
driver = webdriver.Ie(service=IEService(IEDriverManager().install()))Edge
selenium 3の場合
from selenium import webdriver
from webdriver_manager.microsoft import EdgeChromiumDriverManager
driver = webdriver.Edge(EdgeChromiumDriverManager().install())selenium 4の場合
from selenium import webdriver
from selenium.webdriver.edge.service import Service as EdgeService
from webdriver_manager.microsoft import EdgeChromiumDriverManager
driver = webdriver.Edge(service=EdgeService(EdgeChromiumDriverManager().install()))Opera
selenium 3、selenium 4どちらの場合も
from selenium import webdriver
from webdriver_manager.opera import OperaDriverManager
driver = webdriver.Opera(executable_path=OperaDriverManager().install())Operaブラウザが、WindowsではC:/Program FilesまたはC:/Program Files (x86)、Unix系およびMacでは/usr/bin/opera以外の場所にインストールされている場合
from selenium import webdriver
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)コードを実行しよう!
実行すると、次のようなログが流れます。
[WDM] - ====== WebDriver manager ======
2022-07-05 16:06:43,547 INFO ====== WebDriver manager ======
[WDM] - Current google-chrome version is 103.0.5060
2022-07-05 16:06:43,549 INFO Current google-chrome version is 103.0.5060
...後は、これまで通りのコードで大丈夫です。
まとめ
今回は、seleniumを使っていれば一度は遭遇するエラーを解決できるライブラリを紹介しました。
これで、さらに効率化が図れるのではないでしょうか?
ぜひ、使ってみてください!

コメント