In this section, we will explore two of the most straightforward and commonly used methods for locating web elements in Selenium: ID and Name locators. Understanding how to effectively use these locators is crucial for writing efficient and reliable test scripts.

Key Concepts

  1. ID Locator:

    • The ID locator is the most preferred and reliable way to locate elements because IDs are unique within a page.
    • Syntax: driver.findElement(By.id("elementID"))
  2. Name Locator:

    • The Name locator is used when the ID is not available. It is not as unique as ID, but it can still be effective.
    • Syntax: driver.findElement(By.name("elementName"))

Practical Examples

Example 1: Using ID Locator

Let's consider a simple HTML form with a text input field and a submit button:

<!DOCTYPE html>
<html>
<head>
    <title>Sample Form</title>
</head>
<body>
    <form id="loginForm">
        <label for="username">Username:</label>
        <input type="text" id="username" name="username">
        <button type="submit" id="submitBtn">Submit</button>
    </form>
</body>
</html>

Selenium Script:

import org.openqa.selenium.By;
import org.openqa.selenium.WebDriver;
import org.openqa.selenium.WebElement;
import org.openqa.selenium.chrome.ChromeDriver;

public class IDLocatorExample {
    public static void main(String[] args) {
        // Set up the WebDriver
        System.setProperty("webdriver.chrome.driver", "path/to/chromedriver");
        WebDriver driver = new ChromeDriver();

        // Navigate to the web page
        driver.get("file:///path/to/sample-form.html");

        // Locate the username input field using ID
        WebElement usernameField = driver.findElement(By.id("username"));
        usernameField.sendKeys("testuser");

        // Locate the submit button using ID
        WebElement submitButton = driver.findElement(By.id("submitBtn"));
        submitButton.click();

        // Close the browser
        driver.quit();
    }
}

Explanation:

  • We use By.id("username") to locate the username input field and By.id("submitBtn") to locate the submit button.
  • The sendKeys method inputs text into the username field, and the click method submits the form.

Example 2: Using Name Locator

Consider the same HTML form, but this time we'll use the Name attribute:

Selenium Script:

import org.openqa.selenium.By;
import org.openqa.selenium.WebDriver;
import org.openqa.selenium.WebElement;
import org.openqa.selenium.chrome.ChromeDriver;

public class NameLocatorExample {
    public static void main(String[] args) {
        // Set up the WebDriver
        System.setProperty("webdriver.chrome.driver", "path/to/chromedriver");
        WebDriver driver = new ChromeDriver();

        // Navigate to the web page
        driver.get("file:///path/to/sample-form.html");

        // Locate the username input field using Name
        WebElement usernameField = driver.findElement(By.name("username"));
        usernameField.sendKeys("testuser");

        // Locate the submit button using ID (as Name is not available)
        WebElement submitButton = driver.findElement(By.id("submitBtn"));
        submitButton.click();

        // Close the browser
        driver.quit();
    }
}

Explanation:

  • We use By.name("username") to locate the username input field.
  • The submit button is still located using its ID, as it does not have a Name attribute.

Practical Exercises

Exercise 1: Locate Elements Using ID and Name

Task:

  • Create a simple HTML page with a form containing a text input, a password input, and a submit button.
  • Write a Selenium script to fill in the form using ID and Name locators and submit it.

Solution:

<!DOCTYPE html>
<html>
<head>
    <title>Login Form</title>
</head>
<body>
    <form id="loginForm">
        <label for="username">Username:</label>
        <input type="text" id="username" name="username">
        <label for="password">Password:</label>
        <input type="password" id="password" name="password">
        <button type="submit" id="loginBtn">Login</button>
    </form>
</body>
</html>

Selenium Script:

import org.openqa.selenium.By;
import org.openqa.selenium.WebDriver;
import org.openqa.selenium.WebElement;
import org.openqa.selenium.chrome.ChromeDriver;

public class FormAutomation {
    public static void main(String[] args) {
        // Set up the WebDriver
        System.setProperty("webdriver.chrome.driver", "path/to/chromedriver");
        WebDriver driver = new ChromeDriver();

        // Navigate to the web page
        driver.get("file:///path/to/login-form.html");

        // Locate and fill the username field using ID
        WebElement usernameField = driver.findElement(By.id("username"));
        usernameField.sendKeys("myUsername");

        // Locate and fill the password field using Name
        WebElement passwordField = driver.findElement(By.name("password"));
        passwordField.sendKeys("myPassword");

        // Locate and click the login button using ID
        WebElement loginButton = driver.findElement(By.id("loginBtn"));
        loginButton.click();

        // Close the browser
        driver.quit();
    }
}

Feedback and Tips:

  • Ensure that the IDs and Names used in your HTML are unique to avoid conflicts.
  • If an element does not have an ID or Name, consider using other locators like XPath or CSS Selectors.

Conclusion

In this section, we covered how to use ID and Name locators to interact with web elements in Selenium. These locators are fundamental for any Selenium automation script due to their simplicity and reliability. In the next section, we will delve into more advanced locators like XPath and CSS Selectors, which provide greater flexibility for complex web pages.

Test Automation with Selenium

Module 1: Introduction to Test Automation

Module 2: Getting Started with Selenium

Module 3: Locating Web Elements

Module 4: Interacting with Web Elements

Module 5: Synchronization in Selenium

Module 6: Test Frameworks and Selenium

Module 7: Advanced Selenium Concepts

Module 8: Selenium Grid and Parallel Testing

Module 9: Continuous Integration and Selenium

Module 10: Best Practices and Troubleshooting

© Copyright 2024. All rights reserved