• Selenium Video Tutorials

Selenium Webdriver - Handling Links



Selenium Webdriver can be used to handle links on a web page. In HTML terminology, every link (referred to as hyperlinks) are identified by the tagname called anchor. Also, each link on a webpage has an attribute called href.

Let us now discuss the identification of anchor tags for hyperlink - Created on a webpage shown in the below image. First, we would need to right click on the webpage, and then click on the Inspect button in the Chrome browser. Then, the corresponding HTML code for the whole page would be visible. For investigating a single element on a page, we would need to click on the left upward arrow, available to the top of the visible HTML code as highlighted below.

Selenium Handling 1

Once, we had clicked and pointed the arrow to the Created hyperlink, its HTML code was visible.

Selenium Handling 2
<a href="javascript:void(0);" id="created" onclick="shide('create')">Created</a>

We can identify a link with the help of the link text locator for that link. With this, the first element with the matching value of the link text should be returned.

Syntax

Webdriver driver = new ChromeDriver();
driver.findElement(By.linkText("value of link text"));

Let us take an example of the above page, where on clicking the Created link, the text Link has responded with status 201 and status text Created would be visible on the page.

Selenium Handling 3

Example

Code Implementation on HandlingLinks.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 java.util.concurrent.TimeUnit;

public class HandlingLinks {
   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);

      // Opening the webpage where we will identify an element
      driver.get("https://www.tutorialspoint.com/selenium/practice/links.php");

      // identify link with link text locator then click
      WebElement l = driver.findElement(By.linkText("Created"));
      l.click();
      
      // identify text locator
      WebElement t = driver.findElement
         (By.xpath("/html/body/main/div/div/div[2]/div[1]"));
      System.out.println("Text appeared is: " + t.getText());
      
      // Closing browser
      driver.quit();
   }
}

Output

Text appeared is: Link has responded with status 201 and status text Created

Process finished with exit code 0

In the above example, the text obtained after performing the click on the link Created with a message was Link has responded with status 201 and status text Created.

Finally, the message Process finished with exit code 0 was received, signifying successful execution of the code.

We can identify the same link with the help of the partial link text locator for that link. With this, the first element with the matching value of the partial link text for that link should be returned.

Syntax

Webdriver driver = new ChromeDriver();
driver.findElement(By.partialLinkText("value of partial link text"));

Example

Code Implementation on HandlingPartialLinks.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 java.util.concurrent.TimeUnit;

public class HandlingPartialLinks {
   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);

      // Opening the webpage where we will identify an element
      driver.get("https://www.tutorialspoint.com/selenium/practice/links.php");

      // identify link with partial link text locator then click
      WebElement l = driver.findElement(By.partialLinkText("Creat"));
      l.click();

      // identify text locator
      WebElement t = driver.findElement
         (By.xpath("/html/body/main/div/div/div[2]/div[1]"));
      System.out.println("Text appeared is: " + t.getText());

      // Closing browser
      driver.quit();
   }
}

Output

Text appeared is: Link has responded with status 201 and status text Created

Process finished with exit code 0

In the above example, the text obtained after performing the click on the link Created (with the help of partial link text) with a message was Link has responded with status 201 and status text Created.

Finally, the message Process finished with exit code 0 was received, signifying successful execution of the code.

We can identify a link with the help of the tagname anchor for a link. With this, the first element with the matching value of the tagname should be returned.

In the example, discussed above once, we had clicked and pointed the arrow to the Created hyperlink, its HTML code was visible, both reflecting the anchor tagname (referred to as 'a' and enclosed in <>), and href attribute containing the link to the page.

<a href="javascript:void(0);" id="created" onclick="shide('create')">Created</a>
Webdriver driver = new ChromeDriver();
driver.findElement(By.tagName("a"));

Let us take an example of the same page, where we would first count the total number of links, then we would click on a specific link, say the No Content. After clicking on that link, we would get the text as Link has responded with status 204 and status text on the page.

Selenium Handling 4

Example

Code Implementation on TotalLinks.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 java.util.concurrent.TimeUnit;
import java.util.List;

public class HandlingPartialLinks {
   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);

      // Opening the webpage where we will identify an element
      driver.get("https://www.tutorialspoint.com/selenium/practice/links.php");

      // identify link with link text locator then click
      WebElement l = driver.findElement(By.linkText("No Content"));
      l.click();

      // Retrieve all links using locator By.tagName and storing in List
      List<WebElement> totalLnks = driver.findElements(By.tagName("a") );
      System.out.println( "Total number of links: " + totalLnks.size() ) ;

      // Running loop through list of web elements
      for( int j = 0; j < totalLnks.size(); j ++){
         if( totalLnks.get(j).getText().equalsIgnoreCase("No Content") ) {
            totalLnks.get(j).click();
            WebElement t = driver.findElement
               (By.xpath("/html/body/main/div/div/div[2]/div[2]"));

            // get the browser title to confirm navigation after click
            System.out.println( "Get text after click: " + t.getText());
            break ;
         }
      }

      // Closing browser
      driver.quit();
   }
}

Output

Total number of links: 42
Get text after click: Link has responded with status 204 and status text No Content

Process finished with exit code 0

In the above example, we had counted the total number of links on a web page, and received the messages in the console - Total number of links: 42 and the text obtained after performing the the click with the message Get text after click: Link has responded with status 204 and status text No Content.

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 links using the Selenium Webdriver.

Advertisements