LoginSignup
13
17

More than 1 year has passed since last update.

【Python】Selenium 4の変更点とWarning

Posted at

はじめに

以前、Selenium4の新機能をまとめましたが、使っている中でSelenium3 → Selenium4で書き方が変わったものが見つかったので残します。

ドライバの指定

ドライバのパスを指定する方法

Selenium3ではドライバ起動時に直接executable_pathを指定していましたが、Selenium4ではServiceオブジェクトからexecutable_pathを渡します。または、システム環境変数にパスを通します。

# Selenium 3
from selenium import webdriver

options = webdriver.ChromeOptions()
driver = webdriver.Chrome(executable_path="./drivers/chromedriver.exe", options=options)
# Selenium 4
from selenium import webdriver
from selenium.webdriver.chrome.service import Service as ChromeService

options = webdriver.ChromeOptions()
service = ChromeService(executable_path="./drivers/chromedriver.exe")
driver = webdriver.Chrome(service=service, options=options)

Selenium3の書き方でも実行できますが、以下のWarningが表示されます。

DeprecationWarning: executable_path has been deprecated, please pass in a Service object

参考:Upgrade to Selenium 4 | Selenium

webdriver-managerを使う方法

webdriver-managerは各ブラウザのバージョンを自動で確認して実行してくれるライブラリです。ブラウザのバージョンアップの度にドライバを用意するという手間が省けます。

これも同様にSelenium3 → Selenium4 で書き方が異なります。

pip install webdriver-manager
# 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
from webdriver_manager.chrome import ChromeDriverManager

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

モジュールの変更

SelectWebDriverWaitを使うためのモジュールが変わっていました。もしかしたらSelenium3→Selenium4の変更点ではないかもしれません。

ソースコードを見ると、.uiを使っても.select.waitがそれぞれ呼び出されるようになっているので支障はなさそうです。

Select

# Selenium 4
from selenium.webdriver.common.by import By
from selenium.webdriver.support.select import Select  # 以前はselenium.webdriver.support.ui

select_element = driver.find_element(By.ID,'selectElementID')
select_object = Select(select_element)

参考:Working with select list elements | Selenium

WebDriverWait

# Selenium 4
from selenium.webdriver.support.wait import WebDriverWait  # 以前はselenium.webdriver.support.ui

WebDriverWait(driver, timeout=3).until(some_condition)
13
17
1

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
13
17