LoginSignup
60
21

More than 1 year has passed since last update.

【Selenium】急にAttributeError: 'WebDriver' object has no attributeが起きた

Last updated at Posted at 2022-07-03

結論

seleniumのバージョン4.3.0から、find_element_by_*系のメソッドが廃止されて使えなくなった。

経緯

今まで通りスクレイピングしている時に、環境を新しく作って動かしたらエラーが出た

該当のソースコード

scraping.py
from selenium import webdriver
from webdriver_manager.chrome import ChromeDriverManager

options = webdriver.ChromeOptions()
options.add_argument("--headless")
browser = webdriver.Chrome(ChromeDriverManager().install(),options=options)
url = "https://www.google.co.jp/imghp?hl=ja"
browser.get(url)

kw_search = browser.find_element_by_css_selector("#sbtc > div > div.a4bIc > input")

エラー文

Traceback (most recent call last):
  File "/Users/syoshika/.../scraping.py", line 22, in <module>
    kw_search = browser.find_element_by_css_selector("#sbtc > div > div.a4bIc > input")
AttributeError: 'WebDriver' object has no attribute 'find_element_by_css_selector'

予想

エラーは直訳で、「"WebDriver"は"find_element_by_css_selector"という属性を持ってませんよ」
要するに定義されてないメソッドを使おうとしてるからエラーが来てるのかな?
こういうときは大体誤字ってる場合が多いんだけどそうでもなさそう。いつもこれ使ってたのにー。

原因

どうやら、find_elements_by_*系メソッドは バージョン4.3.0で廃止された みたい。

Selenium 4.3.0
Deprecated find_element_by_* and find_elements_by_* are now removed (#10712)

そういえば環境作り直した時に、Seleniumのバージョンを指定せずにインストールしてたわ。

試しにインストールされたSeleniumのバージョンを確認してみる

Terminal
 pip list | grep selenium
結果
>>> selenium   4.3.0

やっぱりか。
最新バージョンがインストールされてたのでダメだったんだね。

というか、Selenium4系から元々メソッドの書き方が変わってた。

3系
driver.find_elements_by_class_name("content")
4系
# 引数にまとめて書くやり方に統一される
from selenium.webdriver.common.by import By
driver.find_elements(By.CLASS_NAME, "content")

対策

4.3.0よりも前をインストール

4.3.0より前のバージョンを再インストールすれば動いた。

pip install selenium==4.1.0

4系の書き方に合わせる

もしくはコードを4系と同じようにしてしまう。

from selenium.webdriver.common.by import By
kw_search = browser.find_element(By.CSS_SELECTOR, "#sbtc > div > div.a4bIc > input")

終わりに

(2022年7月4日 現在)
10日前にアプデが入ったばっかりみたいでした。

現行のSeleniumを使った記事はほとんど前の書き方だから、一旦自分の中で整理してからコードを読み替える必要がありそう。

参考にしたサイト

60
21
3

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
60
21