見出し画像

【Selenium】バージョン4にアップグレードする


主な変更点

Selenium 3からSelenium 4にアップグレードする際にいくつか変更点があります。
公式ドキュメントでは以下のように記載されています。

Selenium 4は、レガシープロトコルのサポートを削除し、内部でデフォルトでW3CWebDriver標準を使用します。 ほとんどの場合、この実装はエンドユーザーに影響を与えません。 主な例外は、Capabilitiesとアクションクラスです。

Selenium4にアップグレードする方法

今回は、4.10.0以降のバージョン(執筆時の最新は4.11.2)にアップグレードする際に必要な修正の一部を紹介します。
ちなみに4.9.1以前のバージョンならば、非推奨のメッセージが表示されるだけでそのまま動きます。

修正1

webdriver内にexecutable_pathを直接指定できなくなったため、Serviceオブジェクト内に指定します。

修正前

driver = webdriver.Chrome(ChromeDriverManager().install())

修正後

from selenium.webdriver.chrome.service import Service as ChromeService

driver = webdriver.Chrome(service=ChromeService(ChromeDriverManager().install()))

Selenium 4.10.0以降は互換性がなくなり、以下のTypeErrorが発生します。

TypeError: WebDriver.__init__() got multiple values for argument 'options'

修正2

webdriver内にCapabilities(desired_capabilities)を直接設定できなくなったため、Optionsオブジェクトに設定します。

chromium/webdriver.pyの差分

修正前

caps = DesiredCapabilities.CHROME.copy()
caps['pageLoadStrategy'] = 'eager'
caps['acceptInsecureCerts'] = True
driver = webdriver.Chrome(service=ChromeService(ChromeDriverManager().install()), desired_capabilities=caps)

修正後

options = webdriver.ChromeOptions()
options.set_capability('pageLoadStrategy', 'eager')
options.set_capability('acceptInsecureCerts', True)
driver = webdriver.Chrome(service=ChromeService(ChromeDriverManager().install()), options=options)

こちらも同様に、以下のTypeErrorが発生します。

TypeError: WebDriver.__init__() got an unexpected keyword argument 'desired_capabilities'


もし参考になりましたら、♡(スキ)をクリックしてもらえると励みになります。


いいなと思ったら応援しよう!