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 HTML document at the URL /tmp/selenium/index-58.html, with the following HTML content.
HTML Webpage
<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 import webdriver
from webdriver_manager.chrome import ChromeDriverManager
from selenium.webdriver.chrome.service import Service as ChromeService
from selenium.webdriver.common.by import By
# Setup chrome driver
driver = webdriver.Chrome(service=ChromeService(ChromeDriverManager().install()))
# Navigate to the url
driver.get('/tmp/selenium/index-58.html')
# Find elements whose Class Name = "flat-button"
my_elements = driver.find_elements(By.CLASS_NAME, 'flat-button')
for element in my_elements:
print(element.get_attribute("outerHTML"))
# Close the driver
driver.quit()
Output
<div class="flat-button">Button 1</div>
<div class="flat-button">Button 2</div>
Summary
In this Python Selenium tutorial, we learned how to find all the elements by class name, present in the webpage, using Selenium.