- Selenium Tutorial
- Selenium - Home
- Selenium - Overview
- Selenium - Components
- Selenium - Automation Testing
- Selenium - Environment Setup
- Selenium - Remote Control
- Selenium IDE Tutorial
- Selenium - IDE Introduction
- Selenium - Features
- Selenium - Limitations
- Selenium - Installation
- Selenium - Creating Tests
- Selenium - Creating Script
- Selenium - Store Variables
- Selenium - Alerts & Popups
- Selenium - Selenese Commands
- Selenium - Actions Commands
- Selenium - Accessors Commands
- Selenium - Assertions Commands
- Selenium - Assert/Verify Methods
- Selenium - Locating Strategies
- Selenium - Script Debugging
- Selenium - Verification Points
- Selenium - Pattern Matching
- Selenium - JSON Data File
- Selenium - Browser Execution
- Selenium - User Extensions
- Selenium - Code Export
- Selenium - JavaScript Functions
- Selenium - Plugins
- Selenium WebDriver Tutorial
- Selenium - Introduction
- Selenium WebDriver vs RC
- Selenium - Installation
- Selenium - First Test Script
- Selenium - Driver Sessions
- Selenium - Browser Options
- Selenium - Chrome Options
- Selenium - Edge Options
- Selenium - Firefox Options
- Selenium - Safari Options
- Selenium Web Elements
- Selenium - File Upload
- Selenium - Locator Strategies
- Selenium - Relative Locators
- Selenium - Finders
- Selenium - Find All Links
- Selenium - User Interactions
- Selenium - WebElement Commands
- Selenium - Browser Interactions
- Selenium - Browser Commands
- Selenium - Browser Navigation
- Selenium - Alerts & Popups
- Selenium - Handling Forms
- Selenium - Windows and Tabs
- Selenium - Handling Links
- Selenium - Input Boxes
- Selenium - Radio Button
- Selenium - Checkboxes
- Selenium - Dropdown Box
- Selenium - Handling IFrames
- Selenium - Handling Cookies
- Selenium - Date Time Picker
- Selenium - Dynamic Web Tables
- Selenium - Actions Class
- Selenium - Action Class
- Selenium - Keyboard Events
- Selenium - Key Up/Down
- Selenium - Copy and Paste
- Selenium - Handle Special Keys
- Selenium - Mouse Events
- Selenium - Drag and Drop
- Selenium - Scroll Operations
- Selenium - Waiting Strategies
- Selenium - Explicit/Implicit Wait
- Selenium - Support Features
- Selenium - Multi Select
- Selenium - Wait Support
- Selenium - Select Support
- Selenium - Color Support
- Selenium - Errors & Logging
- Selenium - Logging
- Selenium - Exception Handling
- Selenium - Miscellaneous
- Selenium - Handling Ajax Calls
- Selenium - JSON Data File
- Selenium - CSV Data File
- Selenium - Excel Data File
- Selenium - Cross Browser Testing
- Selenium - Multi Browser Testing
- Selenium - Multi Windows Testing
- Selenium - JavaScript Executor
- Selenium - Headless Execution
- Selenium - Capture Screenshots
- Selenium - Capture Videos
- Selenium - Page Object Model
- Selenium - Page Factory
- Selenium - Record & Playback
- Selenium - Frameworks
- Selenium - Browsing Context
- Selenium Grid Tutorial
- Selenium - Overview
- Selenium - Architecture
- Selenium - Components
- Selenium - Configuration
- Selenium - Create Test Script
- Selenium - Test Execution
- Selenium - Endpoints
- Selenium - Customizing a Node
- Selenium Reporting Tools
- Selenium - Reporting Tools
- Selenium - TestNG
- Selenium - JUnit
- Selenium - Allure
- Selenium & other Technologies
- Selenium - Java Tutorial
- Selenium - Python Tutorial
- Selenium - C# Tutorial
- Selenium - Javascript Tutorial
- Selenium - Kotlin Tutorial
- Selenium - Ruby Tutorial
- Selenium - Maven & Jenkins
- Selenium - Database Testing
- Selenium - LogExpert Logging
- Selenium - Log4j Logging
- Selenium - Robot Framework
- Selenium - AutoIT
- Selenium - Flash Testing
- Selenium - Apache Ant
- Selenium - Github
- Selenium - SoapUI
- Selenium - Cucumber
- Selenium - IntelliJ
- Selenium - XPath
- Selenium Miscellaneous Concepts
- Selenium - Automation Frameworks
- Selenium - Keyword Driven Framework
- Selenium - Data Driven Framework
- Selenium - Hybrid Driven Framework
- Selenium - SSL Certificate Error
- Selenium - Alternatives
- Selenium Useful Resources
- Selenium - Quick Guide
- Selenium - Useful Resources
- Selenium - Automation Practice
- Selenium - Discussion
Selenium WebDriver - Relative Locators
Selenium 4 gives the options of using the relative locators (also known as friendly locators) apart from the normal locators used for the purpose of identifying elements on a web page.
Relative locators are used for elements which do not have enough information to locate it uniquely on a web application. For locating it, we can identify it spatially with respect to another element which can be located uniquely with its properties.
Please note that, while using the Relative locators, we would need to add the import statement −
import org.openqa.selenium.support.locators.RelativeLocator in our tests
Let us now discuss the relative locators used in Selenium 4. Let us take an example of the highlighted elements in the below page, where we would identify the text Practice Form which is appearing above the link Login with the help of the above locator.
Syntax
WebDriver driver = new ChromeDriver(); // identify element the first element WebElement l = driver.findElement(By.xpath("value of xpath locator")); // identify element above the first link element WebElement e = driver. findElement(RelativeLocator.with(By.tagName("a")).above(l));
Example
Code Implementation on RelativeLocatorsAbove.java class file.
package org.example; 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.locators.RelativeLocator; import java.util.concurrent.TimeUnit; public class RelativeLocatorsAbove { public static void main(String[] args) throws InterruptedException { // Initiate the Webdriver WebDriver driver = new ChromeDriver(); // adding implicit wait of 15 secs driver.manage().timeouts().implicitlyWait(15, TimeUnit.SECONDS); // launching a browser and navigate to a URL driver.get("https://www.tutorialspoint.com/selenium/practice/selenium_automation_practice.php"); // identify first element WebElement l = driver.findElement(By.xpath("//*[@id='collapseTwo']/div/ul/li[2]/a")); // identify element above the first element WebElement e = driver.findElement(RelativeLocator.with(By.tagName("a")).above(l)); // Getting element text value the above identified element System.out.println("Getting element text: " + e.getText()); // Closing browser driver.quit(); } }
Dependencies added in pom.xml file −
<?xml version="1.0" encoding="UTF-8"?> <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> <modelVersion>4.0.0</modelVersion> <groupId>org.example</groupId> <artifactId>SeleniumJava</artifactId> <version>1.0-SNAPSHOT</version> <properties> <maven.compiler.source>16</maven.compiler.source> <maven.compiler.target>16</maven.compiler.target> <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding> </properties> <!-- https://mvnrepository.com/artifact/org.seleniumhq.selenium/selenium-java --> <dependencies> <dependency> <groupId>org.seleniumhq.selenium</groupId> <artifactId>selenium-java</artifactId> <version>4.11.0</version> </dependency> </dependencies> </project>
Output
Getting element text: Practice Form Process finished with exit code 0
In the above example, we had identified the element with the help of the above relative locator and obtained its text with the message in the console - Getting element text: Practice Form.
Finally, the message Process finished with exit code 0 was received, signifying successful execution of the code.
Let us take another example of the highlighted elements in the below page, where we would identify the link Login which is appearing below the link Register with the help of the below locator.
Syntax
WebDriver driver = new ChromeDriver(); // identify element the first element WebElement l = driver.findElement(By.xpath("value of xpath locator")); // identify element below the first link element WebElement e = driver. findElement(RelativeLocator.with(By.tagName("a")).below(l));
Example
Code Implementation on RelativeLocatorsBelow.java class file.
package org.example; 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.locators.RelativeLocator; import java.util.concurrent.TimeUnit; public class RelativeLocatorsBelow { public static void main(String[] args) throws InterruptedException { // Initiate the Webdriver WebDriver driver = new ChromeDriver(); // adding implicit wait of 15 secs driver.manage().timeouts().implicitlyWait(15, TimeUnit.SECONDS); // launching a browser and navigate to a URL driver.get("https://www.tutorialspoint.com/selenium/practice/selenium_automation_practice.php"); // identify first element WebElement l = driver.findElement(By.xpath("//*[@id='collapseTwo']/div/ul/li[2]/a")); // identify element below the first element WebElement e = driver.findElement(RelativeLocator.with(By.tagName("a")).below(l)); // Getting element text value the below identified element System.out.println("Getting element text: " + e.getText()); // Closing browser driver.quit(); } }
Dependencies added in pom.xml file −
<?xml version="1.0" encoding="UTF-8"?> <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> <modelVersion>4.0.0</modelVersion> <groupId>org.example</groupId> <artifactId>SeleniumJava</artifactId> <version>1.0-SNAPSHOT</version> <properties> <maven.compiler.source>16</maven.compiler.source> <maven.compiler.target>16</maven.compiler.target> <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding> </properties> <!-- https://mvnrepository.com/artifact/org.seleniumhq.selenium/selenium-java --> <dependencies> <dependency> <groupId>org.seleniumhq.selenium</groupId> <artifactId>selenium-java</artifactId> <version>4.11.0</version> </dependency> </dependencies> </project>
Output
Getting element text: Register Process finished with exit code 0
In the above example, we had identified the element with the help of the below relative locator and obtained its text with the message in the console - Getting element text: Register.
Finally, the message Process finished with exit code 0 was received, signifying successful execution of the code.
Let us take another example of the highlighted elements in the below page, where we would identify the label text Name which is appearing to the left of an input box with the help of the toLeftOf locator.
Syntax
WebDriver driver = new ChromeDriver(); // identify element the first element WebElement l = driver.findElement(By.xpath("value of xpath locator")); // identify element to left of the first element WebElement e = driver. findElement(RelativeLocator.with(By.tagName("a")).toLeftOf(l));
Example
Code Implementation on RelativeLocatorsLeft.java class file.
package org.example; 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.locators.RelativeLocator; import java.util.concurrent.TimeUnit; public class RelativeLocatorsLeft { public static void main(String[] args) throws InterruptedException { // Initiate the Webdriver WebDriver driver = new ChromeDriver(); // adding implicit wait of 15 secs driver.manage().timeouts().implicitlyWait(15, TimeUnit.SECONDS); // launching a browser and navigate to a URL driver.get("https://www.tutorialspoint.com/selenium/practice/selenium_automation_practice.php"); // identify first element WebElement l = driver.findElement(By.xpath("//*[@id='name']")); // identify element left of the first element WebElement e = driver.findElement(RelativeLocator.with(By.tagName("label")).toLeftOf(l)); // Getting element text to left of identified element System.out.println("Getting element text: " + e.getText()); // Closing browser driver.quit(); } }
Dependencies added in pom.xml file −
<?xml version="1.0" encoding="UTF-8"?> <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> <modelVersion>4.0.0</modelVersion> <groupId>org.example</groupId> <artifactId>SeleniumJava</artifactId> <version>1.0-SNAPSHOT</version> <properties> <maven.compiler.source>16</maven.compiler.source> <maven.compiler.target>16</maven.compiler.target> <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding> </properties> <!-- https://mvnrepository.com/artifact/org.seleniumhq.selenium/selenium-java --> <dependencies> <dependency> <groupId>org.seleniumhq.selenium</groupId> <artifactId>selenium-java</artifactId> <version>4.11.0</version> </dependency> </dependencies> </project>
Output
Getting element text: Name: Process finished with exit code 0
In the above example, we had identified the element with the help of the toLeftOf relative locator and obtained its text with the message in the console - Getting element text: Name:.
Finally, the message Process finished with exit code 0 was received, signifying successful execution of the code.
Let us take another example of the highlighted elements in the below page, where we would identify the text Selenium - Automation Practice Form which is appearing to the right of the page logo with the help of the toRightOf locator.
Syntax
WebDriver driver = new ChromeDriver(); // identify element the first element WebElement l = driver.findElement(By.xpath("value of xpath locator")); // identify element to right of the first element WebElement e = driver. findElement(RelativeLocator.with(By.tagName("h1")).toRightOf(l));
Example
Code Implementation on RelativeLocatorRight .java class file.
package org.example; 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.locators.RelativeLocator; import java.util.concurrent.TimeUnit; public class RelativeLocatorsRight { public static void main(String[] args) throws InterruptedException { // Initiate the Webdriver WebDriver driver = new ChromeDriver(); // adding implicit wait of 15 secs driver.manage().timeouts().implicitlyWait(15, TimeUnit.SECONDS); // launching a browser and navigate to a URL driver.get("https://www.tutorialspoint.com/selenium/practice/selenium_automation_practice.php"); // identify first element WebElement l = driver.findElement(By.xpath("/html/body/div/header/div[1]/a")); // identify element right of the first element WebElement e = driver.findElement(RelativeLocator.with(By.tagName("h1")).toRightOf(l)); // Getting element text to right of identified element System.out.println("Getting element text: " + e.getText()); // Closing browser driver.quit(); } }
Dependencies added in pom.xml file:
<?xml version="1.0" encoding="UTF-8"?> <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> <modelVersion>4.0.0</modelVersion> <groupId>org.example</groupId> <artifactId>SeleniumJava</artifactId> <version>1.0-SNAPSHOT</version> <properties> <maven.compiler.source>16</maven.compiler.source> <maven.compiler.target>16</maven.compiler.target> <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding> </properties> <!-- https://mvnrepository.com/artifact/org.seleniumhq.selenium/selenium-java --> <dependencies> <dependency> <groupId>org.seleniumhq.selenium</groupId> <artifactId>selenium-java</artifactId> <version>4.11.0</version> </dependency> </dependencies> </project>
Output
Getting element text: Selenium - Automation Practice Form Process finished with exit code 0
In the above example, we had identified the element with the help of the toRightOf relative locator and obtained its text with the message in the console - Getting element text: Selenium - Automation Practice Form.
Finally, the message Process finished with exit code 0 was received, signifying successful execution of the code.
Let us take another example of the highlighted elements in the below page, where we would identify and check the checkbox which is appearing near the label Sports with the help of the near locator.
Syntax
WebDriver driver = new ChromeDriver(); // identify element the first element WebElement l = driver.findElement(By.xpath("value of xpath locator")); // identify element to near of the first element WebElement e = driver. findElement(RelativeLocator.with(By.tagName("input")).near(l));
Example
Code Implementation on RelativeLocatorsNear.java class file.
package org.example; 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.locators.RelativeLocator; import java.util.concurrent.TimeUnit; public class RelativeLocatorsNear { public static void main(String[] args) throws InterruptedException { // Initiate the Webdriver WebDriver driver = new ChromeDriver(); // adding implicit wait of 15 secs driver.manage().timeouts().implicitlyWait(15, TimeUnit.SECONDS); // launching a browser and navigate to a URL driver.get("https://www.tutorialspoint.com/selenium/practice/selenium_automation_practice.php"); // identify first element WebElement l = driver.findElement(By.xpath("//*[@id='practiceForm']/div[7]/div/div/div[1]/label")); // identify element near the first element WebElement e = driver.findElement(RelativeLocator.with(By.tagName("input")).near(l)); // check checkbox e.click(); // verify is selected System.out.println("Verify if selected: " + e.isSelected()); // Closing browser driver.quit(); } }
Dependencies added in pom.xml file −
<?xml version="1.0" encoding="UTF-8"?> <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> <modelVersion>4.0.0</modelVersion> <groupId>org.example</groupId> <artifactId>SeleniumJava</artifactId> <version>1.0-SNAPSHOT</version> <properties> <maven.compiler.source>16</maven.compiler.source> <maven.compiler.target>16</maven.compiler.target> <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding> </properties> <!-- https://mvnrepository.com/artifact/org.seleniumhq.selenium/selenium-java --> <dependencies> <dependency> <groupId>org.seleniumhq.selenium</groupId> <artifactId>selenium-java</artifactId> <version>4.11.0</version> </dependency> </dependencies> </project>
Output
Verify if selected: true Process finished with exit code 0
In the above example, we had identified the checkbox with the help of the near relative locator and verified if the checkbox is checked with the message in the console - Verify if selected: true.
Finally, the message Process finished with exit code 0 was received, signifying successful execution of the code.
Let us take another example of the highlighted elements in the below page, where we would enter the text Selenium in the input box which is appearing above the label Email: and right of the label Name: with the help of the chaining locators above and toRightOf.
Syntax
WebDriver driver = new ChromeDriver(); // identify element the first element WebElement l = driver.findElement(By.xpath("value of xpath locator")); // identify element the second element WebElement m = driver.findElement(By.xpath("value of xpath locator")); // identify element by chaining relative locators // identify element by chaining elements WebElement e = driver.findElement(RelativeLocator.with (By.tagName("input")).above(l).toRightOf(m)); // enter some text e.sendKeys("Selenium");
Example
Code Implementation on RelativeLocatorsChain.java class file.
package org.example; 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.locators.RelativeLocator; import java.util.concurrent.TimeUnit; public class RelativeLocatorsChain { public static void main(String[] args) throws InterruptedException { // Initiate the Webdriver WebDriver driver = new ChromeDriver(); // adding implicit wait of 15 secs driver.manage().timeouts().implicitlyWait(15, TimeUnit.SECONDS); // launching a browser and navigate to a URL driver.get("https://www.tutorialspoint.com/selenium/practice/selenium_automation_practice.php"); // identify first element WebElement l = driver.findElement(By.xpath("//*[@id='practiceForm']/div[1]/label")); // identify second element WebElement s = driver.findElement(By.xpath("//*[@id='practiceForm']/div[2]/label")); // identify element by chaining elements WebElement e = driver.findElement(RelativeLocator.with (By.tagName("input")).above(s).toRightOf(l)); // input text e.sendKeys("Selenium"); // verify is selected System.out.println("Value entered is: " + e.getAttribute("value")); // Closing browser driver.quit(); } }
Dependencies added in pom.xml file −
<?xml version="1.0" encoding="UTF-8"?> <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> <modelVersion>4.0.0</modelVersion> <groupId>org.example</groupId> <artifactId>SeleniumJava</artifactId> <version>1.0-SNAPSHOT</version> <properties> <maven.compiler.source>16</maven.compiler.source> <maven.compiler.target>16</maven.compiler.target> <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding> </properties> <!-- https://mvnrepository.com/artifact/org.seleniumhq.selenium/selenium-java --> <dependencies> <dependency> <groupId>org.seleniumhq.selenium</groupId> <artifactId>selenium-java</artifactId> <version>4.11.0</version> </dependency> </dependencies> </project>
Output
Value entered is: Selenium Process finished with exit code 0
In the above example, we had identified the element with the help of the chain of relative locators and obtained the text entered with the message in the console - Value entered is: Selenium.
Finally, the message Process finished with exit code 0 was received, signifying successful execution of the code.
Thus, in this tutorial, we had discussed how to handle relative locators operations on the Selenium Webdriver.
To Continue Learning Please Login
Login with Google