[Python]Selenium3の時に書いたソースをversion4で動かしたらエラーになった

アイキャッチPythonカテゴリ

最近新しくしたPCでSeleniumのバージョン3のときに書いたプログラムを動かしたらエラーになったのでメモ。
動かしたSeleniumのバージョンは「4.15.2」

(スポンサーリンク)
目次

エラーの内容

出たエラーは2種類。
1つは、WebDriverを作るときのパラメータに「excutable_path」なんてないよ!というエラー。

# エラーになったコード
driver = webdriver.Chrome(executable_path=driver_path, options=op)

もう一つはWebDriverに「find_element_by~」なんてメソッドはないよ!というエラー。

# エラーになったコード
item = driver.find_element_by_css_selector('xxxxx')

修正してみる

修正の参考にしたページはこちら

まずは「excutable_path」。
excutable_pathはwebdiverファイルのパスを指定するのに使用するパラメーター。
バージョン4からは「Serviceオブジェクトを渡してください」となってるのでそうする。

from selenium import webdriver
from selenium.webdriver.firefox.options import Options
from selenium.webdriver.chrome.service import Service     # これを追加

op = Options()
svc = Service(executable_path='ドライバーのパス')
driver = webdriver.Chrome(service=svc, options=op)    # パラメータ「service」に作ったsvcを渡す

続いて「find_element_by_~」のエラー。
代わりに「find_element」メソッド、「find_elements」メソッドを使えという感じらしい。
それぞれの第1パラメータに何をつかって要素を探すか(CSSセレクタとかタグ名とか)を指定して、
第2パラメータにはこれまでのように要素を選択するためのLocatorを指定する。

from selenium import webdriver
from selenium.webdriver.firefox.options import Options
from selenium.webdriver.chrome.service import Service 
from selenium.webdriver.common.by import By              # これを追加

op = Options()
svs = Service(executable_path='ドライバーのパス')
driver = webdriver.Chrome(service=service, options=op) 
item = driver.find_element(By.CSS_SELECTOR, 'xxxxxx')   # こんな感じで要素を取得

このメソッドについては前にワーニングが出たときに記事にしていた。

よかったらシェアしてね!
  • URLをコピーしました!
  • URLをコピーしました!

コメント

コメントする

目次