How to find Elements by Class Name using Selenium?

Find Elements by Class Name

To find HTML Elements by class name attribute using Selenium in Python, call find_elements() method, pass By.CLASS_NAME as the first argument, and the class name (of the HTML Elements we need to find) as the second argument.

find_elements(By.CLASS_NAME, "class_name_value")

find_elements() method returns all the HTML Elements that match the given class name as a list.

If there is no elements by given class name, find_elements() function returns an empty list.

Example

Consider the below HTML document.

index.html

<html>
 <body>
  <p>Paragraph 1</p>
  <div class="flat-button">Button 1</div>
  <div class="flat-button">Button 2</div>
  <div class="card">Card 1</div>
  <div class="card">Card 2</div>
 </body>
</html>

In the following program, we will find all the HTML elements whose class name is 'flat-button', using find_elements() method, and print those elements to the console.

Python Program (Selenium)

from selenium.webdriver.chrome.service import Service
from selenium import webdriver
from selenium.webdriver.common.by import By

service = Service(executable_path="/usr/local/bin/chromedriver")
#initialize web driver
with webdriver.Chrome(service=service) as driver:
    #navigate to the url
    driver.get('http://127.0.0.1:5500/localwebsite/index.html')
    #find elements by class name
    elements = driver.find_elements(By.CLASS_NAME, 'flat-button')
    for element in elements:
        print(element.get_attribute("outerHTML"))

Output

<div class="flat-button">Button 1</div>
<div class="flat-button">Button 2</div>

Summary

In this tutorial of Python Examples, we learned how to find all the elements by class name, present in the webpage, using Selenium.