【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を使っていれば一度は遭遇するエラーを解決できるライブラリを紹介しました。
これで、さらに効率化が図れるのではないでしょうか?
ぜひ、使ってみてください!
コメント