Django Girls and Boys 備忘録

Python、Selenium、Django、java、iPhoneアプリ、Excelマクロなどで気付いたこと、覚えておきたいことなどを載せていきます。

【Python Selenium 初心者向け】find_element と find_elements の違い

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 は複数」主な違いはこれです。