Bird
Raised Fist0
Selenium Pythontesting~15 mins

Find element by tag name in Selenium Python - Build an Automation Script

Choose your learning style10 modes available
Verify presence of header element by tag name
Preconditions (2)
Step 1: Open the browser and navigate to 'https://example.com'
Step 2: Locate the first <h1> tag element on the page using tag name locator
Step 3: Verify that the <h1> element is displayed on the page
✅ Expected Result: The <h1> element is found and visible on the page
Automation Requirements - Selenium with Python
Assertions Needed:
Assert that the <h1> element is not None
Assert that the <h1> element is displayed (visible)
Best Practices:
Use explicit waits to wait for the element to be present
Use By.TAG_NAME locator strategy
Handle exceptions if element is not found
Close the browser after test execution
Automated Solution
Selenium Python
from selenium import webdriver
from selenium.webdriver.common.by import By
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC
from selenium.common.exceptions import TimeoutException

# Initialize the Chrome WebDriver
with webdriver.Chrome() as driver:
    driver.get('https://example.com')

    try:
        # Wait up to 10 seconds for the <h1> element to be present
        h1_element = WebDriverWait(driver, 10).until(
            EC.presence_of_element_located((By.TAG_NAME, 'h1'))
        )

        # Assert the element is displayed
        assert h1_element.is_displayed(), 'The <h1> element is not visible on the page.'

        print('Test Passed: <h1> element found and visible.')

    except TimeoutException:
        print('Test Failed: <h1> element not found within 10 seconds.')
        assert False, 'The <h1> element was not found on the page.'

This script uses Selenium WebDriver with Python to automate the test case.

First, it opens the browser and navigates to the specified URL.

Then, it waits explicitly up to 10 seconds for the <h1> tag element to appear on the page using WebDriverWait and presence_of_element_located with By.TAG_NAME.

Once found, it asserts that the element is visible using is_displayed(). If the element is not found within the timeout, it catches the TimeoutException and fails the test.

The with statement ensures the browser closes automatically after the test.

Common Mistakes - 4 Pitfalls
Using find_element without explicit wait
{'mistake': 'Using incorrect locator like By.ID instead of By.TAG_NAME', 'why_bad': "The locator won't find the element if the tag name is required, causing test failure.", 'correct_approach': 'Use By.TAG_NAME locator when searching elements by their tag name.'}
Not checking if the element is displayed before asserting
Not closing the browser after test execution
Bonus Challenge

Now add data-driven testing to verify presence of multiple tag names: 'h1', 'p', and 'footer' on the page.

Show Hint

Practice

(1/5)
1. What does find_element(By.TAG_NAME, 'button') do in Selenium Python?
easy
A. Finds all <button> elements on the page
B. Finds elements by their ID 'button'
C. Finds elements by their class name 'button'
D. Finds the first <button> element on the page

Solution

  1. Step 1: Understand the method used

    The method find_element returns the first matching element found.
  2. Step 2: Understand the locator type

    Using By.TAG_NAME with 'button' searches for the first <button> tag element.
  3. Final Answer:

    Finds the first <button> element on the page -> Option D
  4. Quick Check:

    find_element + TAG_NAME = first matching tag element [OK]
Hint: find_element + TAG_NAME finds only the first matching tag [OK]
Common Mistakes:
  • Confusing find_element with find_elements
  • Using class name or ID instead of tag name
  • Expecting all elements instead of first only
2. Which of the following is the correct syntax to find all p elements using Selenium Python?
easy
A. driver.find_element_by_tag_name('p')
B. driver.find_element(By.TAG_NAME, 'p')
C. driver.find_elements(By.TAG_NAME, 'p')
D. driver.find_elements_by_class_name('p')

Solution

  1. Step 1: Identify method for multiple elements

    To get all matching elements, use find_elements (plural).
  2. Step 2: Use correct locator for tag name

    Use By.TAG_NAME with the tag string 'p'.
  3. Final Answer:

    driver.find_elements(By.TAG_NAME, 'p') -> Option C
  4. Quick Check:

    find_elements + TAG_NAME = all matching tags [OK]
Hint: Use find_elements (plural) to get all elements by tag [OK]
Common Mistakes:
  • Using find_element instead of find_elements
  • Using deprecated find_element_by_tag_name syntax
  • Confusing class name locator with tag name
3. Given the HTML:
<div>
  <button>Click</button>
  <button>Submit</button>
</div>

What will driver.find_element(By.TAG_NAME, 'button').text return?
medium
A. "ClickSubmit"
B. "Click"
C. "Submit"
D. Throws NoSuchElementException

Solution

  1. Step 1: Understand find_element behavior

    It returns the first matching element by tag name, which is the first <button> with text "Click".
  2. Step 2: Access the text property

    The .text attribute returns the visible text inside that element, which is "Click".
  3. Final Answer:

    "Click" -> Option B
  4. Quick Check:

    First button text = "Click" [OK]
Hint: find_element returns first tag; .text shows its text content [OK]
Common Mistakes:
  • Assuming it returns all buttons' text combined
  • Confusing find_element with find_elements
  • Expecting an exception when element exists
4. You wrote this code:
element = driver.find_elements(By.TAG_NAME, 'img')

But you get an error when trying element.click(). What is the problem?
medium
A. find_elements returns a list, not a single element
B. The tag name 'img' is invalid
C. click() cannot be used on images
D. You must use find_element instead of find_elements

Solution

  1. Step 1: Understand return type of find_elements

    find_elements returns a list of WebElements, not a single element.
  2. Step 2: Identify why click() fails

    Calling click() on a list causes an error because lists don't have click method.
  3. Final Answer:

    find_elements returns a list, not a single element -> Option A
  4. Quick Check:

    find_elements = list, cannot call click() directly [OK]
Hint: find_elements returns list; call click() on list item, not list [OK]
Common Mistakes:
  • Calling click() on list instead of element
  • Confusing find_element and find_elements return types
  • Assuming all tags support click() without checking
5. You want to click the second button on a page. Which code correctly finds and clicks it using tag name?
hard
A. buttons = driver.find_elements(By.TAG_NAME, 'button') buttons[1].click()
B. button = driver.find_element(By.TAG_NAME, 'button') button[1].click()
C. button = driver.find_elements(By.TAG_NAME, 'button') button.click()
D. buttons = driver.find_element(By.TAG_NAME, 'button') buttons.click()

Solution

  1. Step 1: Use find_elements to get all buttons

    Use find_elements(By.TAG_NAME, 'button') to get a list of all button elements.
  2. Step 2: Access second button and click

    Index 1 accesses the second button (0-based index), then call click() on it.
  3. Final Answer:

    buttons = driver.find_elements(By.TAG_NAME, 'button') buttons[1].click() -> Option A
  4. Quick Check:

    find_elements + index + click = correct usage [OK]
Hint: Use find_elements, index second item, then click [OK]
Common Mistakes:
  • Using find_element and indexing it like a list
  • Calling click() on list instead of element
  • Using wrong index (like 2 instead of 1 for second element)
Recommended

Ready to prove it?

Pass the test and this pattern moves unknown strong while earning +1 Grip toward your certificate.

10 questions~5 mineasy hard