Selenium webdriver absolute and partial Css selector

Table of Contents

In the modern world of software testing, Selenium WebDriver has become the gold standard for automating web applications. If you are a QA professional, mastering Selenium WebDriver through proper Selenium training can drastically improve your efficiency, accuracy, and career prospects. One critical aspect of Selenium automation is using CSS selectors effectively. In this guide, we will explore absolute and partial CSS selectors in Selenium WebDriver, providing practical examples, step-by-step tutorials, and industry-relevant insights.

Introduction 

Selenium WebDriver is an open-source tool widely used for automating web browser interactions. Unlike its predecessor, Selenium RC, WebDriver interacts directly with the browser, offering faster execution, improved compatibility, and support for multiple programming languages like Java, Python, C#, and Ruby.

Automation engineers heavily rely on Selenium WebDriver to perform tasks such as:

  • Functional testing
  • Regression testing
  • Cross-browser testing
  • Data-driven and keyword-driven testing

CSS selectors play a crucial role in Selenium WebDriver, allowing testers to locate and manipulate web elements efficiently.

What Are CSS Selectors in Selenium WebDriver?

CSS selectors are patterns used to identify and select HTML elements based on their attributes, IDs, classes, or hierarchy. They are faster than XPath in many cases because browsers optimize CSS query performance.

In Selenium WebDriver, CSS selectors provide:

  • Precision: Target specific elements using IDs, classes, or attributes.
  • Flexibility: Handle dynamic elements that lack unique IDs.
  • Performance: Enable faster execution in large-scale automation projects.

CSS selectors are generally categorized into two types:

  1. Absolute CSS selectors
  2. Partial or relative CSS selectors

Let’s explore both in detail.

Absolute CSS Selector in Selenium WebDriver

What Is an Absolute CSS Selector?

An absolute CSS selector defines the full path from the HTML root (<html>) to the desired element. It provides a precise route, ensuring the element is uniquely identified.

Syntax Example:

html body div.container div.header ul li a

Here, every parent element is listed, making it the absolute path to the anchor tag.

Advantages of Absolute CSS Selectors

  • High accuracy when the HTML structure is static
  • Useful for uniquely identifying elements when IDs or classes are missing

Disadvantages of Absolute CSS Selectors

  • Fragile: Changes in HTML structure break the selector
  • Difficult to maintain for complex web pages
  • Not ideal for dynamic web applications

Absolute CSS Selector in Selenium WebDriver Code

import org.openqa.selenium.By;

import org.openqa.selenium.WebDriver;

import org.openqa.selenium.WebElement;

import org.openqa.selenium.chrome.ChromeDriver;

public class AbsoluteCssExample {

    public static void main(String[] args) {

        System.setProperty(“webdriver.chrome.driver”,”path_to_chromedriver”);

        WebDriver driver = new ChromeDriver();

        driver.get(“https://example.com”);

        // Using absolute CSS selector

        WebElement element = driver.findElement(By.cssSelector(“html body div.container div.header ul li a”));

        element.click();

        driver.quit();

    }

}

In this example, the absolute path targets the anchor tag within a nested structure. This approach works well for simple, static pages.

Partial or Relative CSS Selector in Selenium WebDriver

What Is a Partial CSS Selector?

A partial or relative CSS selector targets elements based on partial paths or unique attributes like id, class, name, or other attributes. It is more flexible and robust than absolute selectors, especially for dynamic web pages.

Syntax Example:

div.header a.button

This selector targets any anchor with the class button inside a div with class header, regardless of its position in the DOM.

Advantages of Partial CSS Selectors

  • Highly maintainable and less fragile
  • Works well with dynamic elements
  • Easier to read and understand for large web pages

Disadvantages

  • May require additional specificity if multiple similar elements exist
  • Needs careful use to avoid unintended element selection

Partial CSS Selector in Selenium WebDriver Code

import org.openqa.selenium.By;

import org.openqa.selenium.WebDriver;

import org.openqa.selenium.WebElement;

import org.openqa.selenium.chrome.ChromeDriver;

public class PartialCssExample {

    public static void main(String[] args) {

        System.setProperty(“webdriver.chrome.driver”,”path_to_chromedriver”);

        WebDriver driver = new ChromeDriver();

        driver.get(“https://example.com”);

        // Using partial CSS selector

        WebElement element = driver.findElement(By.cssSelector(“div.header a.button”));

        element.click();

        driver.quit();

    }

}

Here, the partial CSS selector ensures stability even if additional elements are added to the page.

Key Differences Between Absolute and Partial CSS Selectors

FeatureAbsolute CSS SelectorPartial CSS Selector
PathFull HTML pathRelative path using attributes or classes
StabilityFragile, breaks easilyRobust, more maintainable
Use CaseStatic pagesDynamic or frequently changing pages
ReadabilityHard to readEasy to read
PerformanceSlightly slowerFaster and optimized

In practice, partial CSS selectors are preferred in Selenium WebDriver because web applications often undergo frequent updates.

Real-World Examples of CSS Selectors in Selenium WebDriver

Selecting Elements by ID

driver.findElement(By.cssSelector(“#loginButton”)).click();

Selecting Elements by Class Name

driver.findElement(By.cssSelector(“.btn-primary”)).click();

Selecting Nested Elements

driver.findElement(By.cssSelector(“div.form-group input[name=’username’]”)).sendKeys(“testuser”);

Using Attribute Selectors

driver.findElement(By.cssSelector(“input[type=’password’]”)).sendKeys(“mypassword”);

Using Partial Matching

driver.findElement(By.cssSelector(“input[name*=’user’]”)).sendKeys(“testuser”);

Here, *= selects elements whose name attribute contains user. This is ideal for dynamic elements where IDs or classes change.

Best Practices for CSS Selectors in Selenium WebDriver

  1. Prefer partial selectors over absolute selectors: Absolute paths are brittle and prone to breaking.
  2. Use unique IDs whenever possible: #id selectors are the fastest and most reliable.
  3. Combine multiple attributes: Improves specificity and reduces selection errors.
  4. Test selectors in browser DevTools: Chrome or Firefox DevTools can help validate CSS selectors before using them in code.
  5. Avoid overly generic selectors: Generic classes like .btn can target multiple elements unintentionally.

By following these best practices, your Selenium WebDriver automation becomes more stable, readable, and maintainable.

Hands-On Tutorial: Automating a Login Page Using CSS Selectors

Step 1: Setup Selenium WebDriver

  • Install Selenium WebDriver dependencies for your preferred language.
  • Download the appropriate browser driver (e.g., ChromeDriver, GeckoDriver).

Step 2: Inspect the Login Page

Use the browser’s Inspect tool to identify element attributes.

Example HTML:

<form id=”loginForm”>

    <input type=”text” id=”username” name=”username”>

    <input type=”password” id=”password” name=”password”>

    <button type=”submit” class=”btn login-btn”>Login</button>

</form>

Step 3: Write the Selenium WebDriver Script

import org.openqa.selenium.By;

import org.openqa.selenium.WebDriver;

import org.openqa.selenium.WebElement;

import org.openqa.selenium.chrome.ChromeDriver;

public class LoginAutomation {

    public static void main(String[] args) {

        System.setProperty(“webdriver.chrome.driver”,”path_to_chromedriver”);

        WebDriver driver = new ChromeDriver();

        driver.get(“https://example.com/login”);

        // Absolute CSS selector

        driver.findElement(By.cssSelector(“html body div#loginForm input#username”)).sendKeys(“admin”);

        // Partial CSS selector

        driver.findElement(By.cssSelector(“input[name*=’pass’]”)).sendKeys(“admin123”);

        // Button click

        driver.findElement(By.cssSelector(“button.btn.login-btn”)).click();

        driver.quit();

    }

}

This selenium tutorial demonstrates how both absolute and partial selectors can be used efficiently in Selenium WebDriver scripts.

Common Errors and How to Fix Them

  1. ElementNotFoundException
    • Usually caused by incorrect selectors. Validate using browser DevTools.
  2. StaleElementReferenceException
    • Happens when the page reloads or the DOM updates. Use explicit waits.
  3. Ambiguous Element Selection
    • Using generic classes like .btn may select multiple elements. Use a more specific selector.
  4. CSS Syntax Errors
    • Ensure proper usage of # for IDs, . for classes, and [attribute=’value’] for attributes.

By troubleshooting these issues, your Selenium WebDriver automation becomes more robust and reliable.

Conclusion

Mastering Selenium WebDriver and understanding the nuances of absolute and partial CSS selectors are vital for any automation professional. While absolute selectors offer precision, partial selectors provide flexibility and maintainability. Combining the two approaches strategically allows you to automate complex web applications efficiently.

Key Takeaways:

  • Absolute selectors are precise but fragile.
  • Partial selectors are flexible, robust, and easier to maintain.
  • Use unique IDs and attributes for optimal performance.
  • Always validate CSS selectors in browser DevTools before automation.

Level up your automation skills by practicing CSS selectors in real-time projects and making your Selenium WebDriver scripts more efficient and reliable.

Share this article

Enroll Free demo class
Enroll IT Courses

Enroll Free demo class

Leave a Reply

Your email address will not be published. Required fields are marked *

This site uses Akismet to reduce spam. Learn how your comment data is processed.

Join Free Demo Class

Let's have a chat