Python Selenium

Seleniumで「WebDriver object has no attribute」が起きた時の対策と解決法

この記事は約3分で読めます。

 

こんにちは、ミナピ(@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")


プログラミング・スクレイピングツール作成の相談を受け付けています!

クラウドワークス・ココナラ・MENTAなどでPython・SQL・GASなどのプログラミングに関する相談やツール作成などを承っております!

過去の案件事例:

  • Twitter・インスタグラムの自動化ツール作成
  • ウェブサイトのスクレイピングサポート
  • ダッシュボード・サイト作成
  • データエンジニア転職相談

これまでの案件例を見る

キャリア相談もお気軽に!文系学部卒からエンジニア・データサイエンティストへの転職経験をもとに、未経験者がどう進むべきかのアドバイスを提供します。


スポンサーリンク
/* プログラミング速報関連記事一覧表示 */
ミナピピンの研究室

コメント

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