Bird
Raised Fist0
Selenium Javatesting~15 mins

findElement by tagName in Selenium Java - Build an Automation Script

Choose your learning style10 modes available
Verify the presence of the first <h1> tag on the homepage
Preconditions (2)
Step 1: Open the browser and navigate to https://example.com
Step 2: Locate the first <h1> tag on the page using tagName locator
Step 3: Verify that the <h1> tag is displayed
Step 4: Verify that the text inside the <h1> tag is 'Welcome to Example'
✅ Expected Result: The first <h1> tag is found, visible, and contains the text 'Welcome to Example'
Automation Requirements - Selenium WebDriver with Java
Assertions Needed:
Assert that the <h1> element is displayed
Assert that the text of the <h1> element equals 'Welcome to Example'
Best Practices:
Use explicit waits to wait for the <h1> element to be present and visible
Use By.tagName locator to find the element
Close the browser after test execution
Automated Solution
Selenium Java
import org.openqa.selenium.By;
import org.openqa.selenium.WebDriver;
import org.openqa.selenium.WebElement;
import org.openqa.selenium.chrome.ChromeDriver;
import org.openqa.selenium.support.ui.ExpectedConditions;
import org.openqa.selenium.support.ui.WebDriverWait;

import java.time.Duration;

public class FindElementByTagNameTest {
    public static void main(String[] args) {
        // Set path to chromedriver if needed
        // System.setProperty("webdriver.chrome.driver", "/path/to/chromedriver");

        WebDriver driver = new ChromeDriver();
        try {
            driver.get("https://example.com");

            WebDriverWait wait = new WebDriverWait(driver, Duration.ofSeconds(10));
            // Wait until the <h1> element is visible
            WebElement h1Element = wait.until(ExpectedConditions.visibilityOfElementLocated(By.tagName("h1")));

            // Assert that the element is displayed
            if (!h1Element.isDisplayed()) {
                throw new AssertionError("<h1> element is not displayed");
            }

            // Assert that the text is exactly 'Welcome to Example'
            String expectedText = "Welcome to Example";
            String actualText = h1Element.getText();
            if (!actualText.equals(expectedText)) {
                throw new AssertionError(String.format("Expected text '%s' but found '%s'", expectedText, actualText));
            }

            System.out.println("Test passed: <h1> tag found with correct text.");
        } finally {
            driver.quit();
        }
    }
}

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

First, it opens the Chrome browser and navigates to the homepage URL.

It uses an explicit wait to wait up to 10 seconds for the <h1> element to be visible on the page, ensuring the page has loaded the element.

Then it checks if the element is displayed on the page. If not, it throws an assertion error.

Next, it verifies the text inside the <h1> tag exactly matches 'Welcome to Example'. If the text differs, it throws an assertion error with a clear message.

If both checks pass, it prints a success message.

Finally, it closes the browser to clean up resources.

This approach follows best practices by using explicit waits, proper locators, and clear assertions.

Common Mistakes - 3 Pitfalls
Using Thread.sleep() instead of explicit waits
{'mistake': 'Using By.id or By.className when the element only has a tag name', 'why_bad': 'If the element does not have an id or class attribute, these locators will fail and cause NoSuchElementException.', 'correct_approach': 'Use By.tagName("h1") to locate the element by its tag name as specified.'}
Not closing the browser after test execution
Bonus Challenge

Now add data-driven testing to verify the <h1> text for 3 different URLs with their expected <h1> texts.

Show Hint

Practice

(1/5)
1. What does the Selenium method findElement(By.tagName("button")) do?
easy
A. Finds the first <button> element on the page
B. Finds all <button> elements on the page
C. Finds the element with id 'button'
D. Finds the element with class name 'button'

Solution

  1. Step 1: Understand the method purpose

    findElement returns the first matching element found by the locator.
  2. Step 2: Analyze the locator type

    By.tagName("button") looks for elements with the tag <button>.
  3. Final Answer:

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

    findElement + tagName = first matching element [OK]
Hint: findElement with tagName finds only the first matching tag [OK]
Common Mistakes:
  • Confusing findElement with findElements
  • Using tagName but expecting multiple elements
  • Mixing tagName with id or class selectors
2. Which of the following is the correct syntax to find the first <input> element using Selenium in Java?
easy
A. driver.findElement(By.tagName['input']);
B. driver.findElement(By.tagName(input));
C. driver.findElement(By.tagName("input"));
D. driver.findElement(By.tagName{input});

Solution

  1. Step 1: Check method usage

    The method findElement requires a By locator with a string argument for tagName.
  2. Step 2: Validate syntax correctness

    Only driver.findElement(By.tagName("input")); uses correct Java syntax with quotes around "input" and parentheses.
  3. Final Answer:

    driver.findElement(By.tagName("input")); -> Option C
  4. Quick Check:

    Correct method call with string tag name [OK]
Hint: Always put tag name in quotes inside By.tagName() [OK]
Common Mistakes:
  • Missing quotes around tag name
  • Using wrong brackets like [] or {}
  • Omitting parentheses after findElement
3. Given the HTML snippet:
<div>
  <h1>Title</h1>
  <h1>Subtitle</h1>
</div>

What text will be printed by this Java Selenium code?
WebElement header = driver.findElement(By.tagName("h1"));
System.out.println(header.getText());
medium
A. Subtitle
B. Title
C. TitleSubtitle
D. No text, throws exception

Solution

  1. Step 1: Understand findElement behavior

    findElement returns the first matching element, here the first <h1> which contains "Title".
  2. Step 2: Check getText output

    Calling getText() on the first <h1> returns its text content "Title" only.
  3. Final Answer:

    Title -> Option B
  4. Quick Check:

    findElement returns first tag's text [OK]
Hint: findElement by tagName returns first element only [OK]
Common Mistakes:
  • Assuming it returns all matching elements
  • Expecting concatenated text of all tags
  • Confusing findElement with findElements
4. What is wrong with this Selenium Java code snippet?
WebElement element = driver.findElement(By.tagName("button"));
System.out.println(element.getText());

Assuming the page has no <button> tags.
medium
A. It compiles but does not run
B. It returns null and prints nothing
C. It prints empty string without error
D. It throws NoSuchElementException at runtime

Solution

  1. Step 1: Check element presence

    Since no <button> tags exist, findElement cannot find any matching element.
  2. Step 2: Understand exception behavior

    findElement throws NoSuchElementException if no element is found, causing runtime error.
  3. Final Answer:

    It throws NoSuchElementException at runtime -> Option D
  4. Quick Check:

    findElement throws error if no match [OK]
Hint: findElement throws exception if tag not found [OK]
Common Mistakes:
  • Expecting null instead of exception
  • Assuming empty string returned
  • Confusing with findElements behavior
5. You want to click the first <input> element of type 'submit' on a page using Selenium Java. Which code snippet correctly finds it using findElement(By.tagName()) and then clicks it?
hard
A. WebElement submit = driver.findElement(By.tagName("input")); if ("submit".equals(submit.getAttribute("type"))) submit.click();
B. WebElement submit = driver.findElement(By.tagName("input[type='submit']")); submit.click();
C. WebElement submit = driver.findElement(By.tagName("submit")); submit.click();
D. WebElement submit = driver.findElement(By.tagName("input")); submit.click();

Solution

  1. Step 1: Understand tagName limitations

    By.tagName("input") finds the first <input> element regardless of type attribute.
  2. Step 2: Filter by type attribute manually

    Check if the found element's type attribute equals "submit" before clicking.
  3. Step 3: Analyze options

    WebElement submit = driver.findElement(By.tagName("input")); if ("submit".equals(submit.getAttribute("type"))) submit.click(); correctly finds first input, checks type, then clicks. WebElement submit = driver.findElement(By.tagName("input[type='submit']")); submit.click(); uses invalid tagName syntax. WebElement submit = driver.findElement(By.tagName("submit")); submit.click(); searches for non-existent tag <submit>. WebElement submit = driver.findElement(By.tagName("input")); submit.click(); clicks first input without type check.
  4. Final Answer:

    WebElement submit = driver.findElement(By.tagName("input")); if ("submit".equals(submit.getAttribute("type"))) submit.click(); -> Option A
  5. Quick Check:

    Use tagName then check attribute for type [OK]
Hint: findElement by tagName finds tag only; check attributes separately [OK]
Common Mistakes:
  • Trying to use CSS selector syntax inside tagName
  • Assuming tagName can filter by attribute
  • Clicking without verifying element type
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