python seleniumでエラー「’WebDriver’ object has no attribute ‘find_element_by_name’」が発生した場合の対処法

python seleniumでエラー「’WebDriver’ object has no attribute ‘find_element_by_name’」が発生した場合の対処法

pythonで、selenium使用時にエラー「’WebDriver’ object has no attribute ‘find_element_by_name’」が発生した場合の対処法を記述してます。「selenium」のバージョン4.3以降は「find_element_by_name」は使用できないため、このエラーが発生します。

環境

  • OS windows 11 Home
  • python 3.10.8
  • selenium 4.7.2

エラー全文

以下の、nameを指定して要素を取得しようとしたコードで発生

elem_username  = driver.find_element_by_name('session[username]')

エラーメッセージ

例外が発生しました: AttributeError
'WebDriver' object has no attribute 'find_element_by_name'
  File "C:\python\test.py", line 16, in <module>
    elem_username  = driver.find_element_by_name('session[username]')
AttributeError: 'WebDriver' object has no attribute 'find_element_by_name'

画像

原因

selenium 4.3.0以降は「find_element_by_name」は使用できないため。
※「selenium」のバージョン確認方法は以下となります。

> pip list

Package          Version
---------------- ---------
async-generator  1.10
attrs            22.2.0
certifi          2022.12.7
cffi             1.15.1
exceptiongroup   1.1.0
h11              0.14.0
idna             3.4
outcome          1.2.0
pip              22.3.1
pycparser        2.21
PySocks          1.7.1
selenium         4.7.2

対処法

「find_element」を使用します。

elem_username  = driver.find_element("name", "username")

もしくは「selenium」をダウングレードします。

pip install selenium==4.1.0