「Selenium」を使ってテストをしたところ、以下のようなエラーが出てしまいました。
% python test.py
Traceback (most recent call last):
File "/Users/xxxx/test.py", line 9, in <module>
search_box = driver.find_element_by_name('q') #ページ上の要素の取得
AttributeError: 'WebDriver' object has no attribute 'find_element_by_name'
対処方法を簡単にですが、まとめました。
目次
原因
find_elements_by_*系メソッドが「バージョン4.3.0」で廃止されたため、このようなエラーが発生したようです。
対処方法
対処方法は2つ。
4.3.0以降の記述方法に変更する
以下のような記述方法に変えてみる。
from selenium.webdriver.chrome.service import Service
from selenium.webdriver.chrome.options import Options
driver = webdriver.Chrome(service=Service('chromedriver_105.exe'), options=options) # Chrome Driver
# 検索ワードに「Yahoo」と入力
driver.find_element("xpath", '/html/body/div[1]/div[3]/form/div[1]/div[1]/div[1]/div/div[2]/input').send_keys("Yahoo")
4.3.0以前にバージョンを下げる
4.3.0よりも前のバージョンをインストールして、切り替えることにより回避も可能です。
pip install selenium==4.1.0