
Seleniumを使い始めたとき、多くの人が迷うことの1つが以下の2つの違いです。
find_element
find_elements
名前がほぼ同じなので混乱しがちですが、
実は違いはとてもシンプルです。
この記事では、初心者でも理解できるように
find_element と find_elements の違いをわかりやすく解説します。
結論:違いは「1つ」か「複数」か
まず結論です。
| メソッド | 意味 |
|---|---|
| find_element | 1つだけ取得 |
| find_elements | 複数取得(リスト) |
これだけ覚えればOKです。
find_elementとは(1つだけ取得)
from selenium.webdriver.common.by import By
element = driver.find_element(By.CLASS_NAME, "item")
特徴:
-
最初に見つかった 1つの要素だけ を取得
-
戻り値は 単体の要素(WebElement)
イメージ
<li class="item">Apple</li>
<li class="item">Orange</li>
<li class="item">Banana</li>
この場合
element = driver.find_element(By.CLASS_NAME, "item")
👉 取得されるのは
Apple
だけです。
find_elementsとは(複数取得)
elements = driver.find_elements(By.CLASS_NAME, "item")
特徴:
-
条件に一致する すべての要素を取得
-
戻り値は リスト(配列)
使い方
elements = driver.find_elements(By.CLASS_NAME, "item")
for element in elements:
print(element.text)
結果:
Apple
Orange
Banana
よくあるミス①:ループできない
element = driver.find_element(By.CLASS_NAME, "item")
for e in element:
print(e.text)
👉 エラーになります
理由:
-
find_elementは1つだけ -
リストではない
よくあるミス②:要素が見つからない
driver.find_element(By.ID, "not_exist")
👉 エラーになります
NoSuchElementException
find_elementsなら安全
elements = driver.find_elements(By.ID, "not_exist")
print(len(elements)) # 0
👉 エラーにならない
使い分けまとめ
| 状況 | 使うメソッド |
|---|---|
| 1つだけ取得したい | find_element |
| 複数ある可能性 | find_elements |
| エラーを避けたい | find_elements |
実務でよくある使い方
商品一覧を取得
items = driver.find_elements(By.CLASS_NAME, "product")
for item in items:
print(item.text)
ボタンをクリック(1つだけ)
driver.find_element(By.ID, "login").click()
まとめ
-
find_element→ 1つ取得 -
find_elements→ 複数取得(リスト)
そして一番大事なのはこれです。
👉 迷ったら find_elements を使うと安全
一言まとめ
「element は1つ、elements は複数」主な違いはこれです。