【Python】seleniumでfind_element_by_nameや、find_element_by_idが使用できない

プログラミング

概要

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に限らず日々コードの書き方は変更されています。

常に最新の情報を把握しておき、このような細かいエラーに悩まされないようにしたいですね。

今回の記事がその助けになれば幸いです。

コメント

タイトルとURLをコピーしました