こんにちは、ミナピ(@python_mllover)です
今回は業務でSeleniumでのスクレイピングプログラムを作成した際に「WebDriver’ object has no attribute」というエラーが起きたので、その時に行った対策をメモしておきます。
エラーが発生するコード
<該当コード>
driver.get('~~~')
driver.find_element_by_tag_name('div')
<エラーメッセージ>
raceback (most recent call last):
File "/Users/syoshika/.../scraping.py", line 22, in
kw_search = browser.find_element_by_css_selector("#sbtc > div > div.a4bIc > input")
AttributeError: 'WebDriver' object has no attribute 'find_element_by_css_selector'
エラーの原因
上記のエラーの原因はseleniumのバージョン4.3.0から、find_element_by_~系のメソッドが廃止されて使えなくなったことが原因でした。
Seleniumのバージョン確認方法
以下のコードでPython上から現在使用しているSeleniumのバージョンを確認することができます。まずはこれで自分が今使っているSeleniumのバージョンを確認してみましょう
import selenium
print(selenium.__version__) #3.4.0 例
上記の実行結果が4.3以上だった場合は下記のコマンドを実行してSeleniumのバージョンをダウングレードするのも解決策の1つです
# Seleniumのバージョンを昔のものにする
$ pip install selenium==3.141.0
seleniumのバージョン4.3.0以降の書き方
またseleniumのバージョン4.3.0以降だとdriverで表示しているサイトのタグ要素指定する場合は以下のように書くみたいです。
#seleniumのバージョン4.3.0以降の書き方
from selenium.webdriver.common.by import By
# class指定
driver.find_elements(By.CLASS_NAME, "tag_name")
# タグ指定
driver.find_elements(By.TAG_NAME, "div")
コメント