最近新しくした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')
修正してみる
修正の参考にしたページはこちら。
Selenium4にアップグレードする方法
Selenium 4に興味がありますか? 最新リリースへのアップグレードに役立つこのガイドを確認してください。
まずは「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') # こんな感じで要素を取得
このメソッドについては前にワーニングが出たときに記事にしていた。
[Python]Seleniumをversion4にしたらワーニングがでた
なんかSeleniumのバージョンを3から4に上げたらワーニングがでたのでメモ バージョンの確認コマンド pip list 実行するとこんなメッセージがでてくるようになった 前に…
コメント