概要
SeleniumはWebブラウザの操作を自動化するためにWebスクレイピングなどで活躍するフレームワークです。
Webスクレイピングなどに取り組む中で少し古い記事にはfind_element_by_nameやfind_element_by_idが使用されているのですが、これを使用するとエラーが発生してしまいます。
今回はこのエラーが出た際の対処法について紹介します。
問題
例えばユーザーIDなどを入力して会員専用ページにアクセスする場合、
id = browser.find_element_by_ID(‘user_id’)
などと入力して実行すると下記エラーが発生します。
AttributeError: ‘WebDriver’ object has no attribute ‘find_element_by_ID’
find_element…自体は使用できないようです。
環境
- パソコン:Macbook Air M1チップ
解決法
原因を調べてみるとfind_element_by_ID, nameが使用できなくなった理由は、Selenium3からSelenium4に変わったときの仕様変更のようです。
ということですので、下記の通り構文を書き換えます。
まずはByをインポートします。
from selenium.webdriver.common.by import By
そして下記のように書き換えます。
id_ = browser.find_element(By.ID, 'user_name')
name = browser.find_element(By.NAME, 'login')
find_element_by_name → browser.find_element(By.NAME, ‘〇〇’)
find_element_by_id → browser.find_element(By.ID, ‘〇〇’)
のように変更されました。
この通りに入力すればエラーは解消されるはずです。
ちなみにSeleniumのバージョンはターミナルからpip listコマンドを使用することで確認できます。
まとめ
今回はSeleniumで発生したエラーについてまとめました。
Seleniumに限らず日々コードの書き方は変更されています。
常に最新の情報を把握しておき、このような細かいエラーに悩まされないようにしたいですね。
今回の記事がその助けになれば幸いです。
コメント