Selenium - Find All Links
Selenium Webdriver can be used to count the total number of links on a web application. Often, while performing scrapping of a webpage, we would normally need to count the links. All links (referred to as hyperlinks) have by the tagname called anchor and it has an attribute known as the href.
Identification of Links in HTML
Let us now discuss the identification of the link Home on a webpage shown in the below image. Open the Chrome browser, right click on the web page, and then click on the Inspect button. Then, the complete HTML code for the page would be available. For investigating the Home link on the page, click on the left upward arrow, available to the top of the visible HTML code as highlighted below.
Once, we had clicked and pointed the arrow to the Home hyperlink, its HTML code would be visible, both reflecting the anchor tagname (referred to as a), and the href attribute containing the link to a page.
<a href="https://www.tutorialspoint.com/index.htm" target="_blank">Home</a>
Count Total Links
Let us take an example of the above page, where we would count the total number of links. Here on this page, the total number of links should be 42.
Example
package org.example;
import org.openqa.selenium.WebDriver;
import org.openqa.selenium.edge.EgeDriver;
import java.util.List;
import java.util.concurrent.TimeUnit;
import org.openqa.selenium.By;
import org.openqa.selenium.WebElement;
public class CountLinks {
public static void main(String[] args) throws InterruptedException {
// Initiate the Webdriver
WebDriver driver = new EdgeDriver() ;
// adding implicit wait of 10 secs
driver.manage().timeouts().implicitlyWait(10, TimeUnit.SECONDS);
// Opening the webpage where we will count the links
driver.get( "https://www.tutorialspoint.com/selenium/practice/links.php" ) ;
// Retrieve all links using locator By.tagName a and storing in List
List<WebElement> totalLnks = driver.findElements(By.tagName("a"));
System.out.println( "Total number of links:" + totalLnks.size() ) ;
// Closing browser
driver.quit();
}
}
Maven dependencies added to pom.xml
<?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
Total number of links on a page: 42 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 on a page: 42.
Finally, the message Process finished with exit code 0 was received, signifying successful execution of the code.
Get All Link Names
Now, let us take a look at an example of getting the names of all the hyperlinks on the web page discussed above.
Example
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.List;
import java.util.concurrent.TimeUnit;
public class TotalLinksWithNm {
public static void main(String[] args) throws InterruptedException {
// Initiate the Webdriver
WebDriver driver = new ChromeDriver() ;
// adding implicit wait of 10 secs
driver.manage().timeouts().implicitlyWait(10, TimeUnit.SECONDS);
// Opening the webpage where we will count the links
driver.get( "https://www.tutorialspoint.com/selenium/practice/links.php") ;
// 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++) {
// get the all hyperlink texts
System.out.println( "Link text is: " + totalLnks.get(j).getText() ) ;
}
// Closing browser
driver.quit();
}
}
Output
Total number of links: 42 Link text is: Link text is: Selenium Tutorial Link text is: Text Box Link text is: Check Box Link text is: Radio Button Link text is: Web Tables Link text is: Buttons Link text is: Links Link text is: Broken Links - Images Link text is: Upload and Download Link text is: Dynamic Properties Link text is: Link text is: Link text is: Link text is: Link text is: Link text is: Link text is: Link text is: Link text is: Link text is: Link text is: Link text is: Link text is: Link text is: Link text is: Link text is: Link text is: Link text is: Link text is: Link text is: Link text is: Link text is: Link text is: Home Link text is: HomewPWPU Link text is: Created Link text is: No Content Link text is: Moved Link text is: Bad Request Link text is: Unauthorized Link text is: Forbidden Link text is: Not Found 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 message in the console - Total number of links: 42 and all the link texts.
At last, the message Process finished with exit code 0 was received, signifying successful execution of the code.
Conclusion
This concludes our comprehensive take on the tutorial on Selenium Webdriver Find All Links. Weve started with describing identification of links in HTML, and examples to illustrate how to count total number of links and link names in Selenium Webdriver. This equips you with in-depth knowledge of the Selenium Webdriver - Find All Links. It is wise to keep practicing what youve learned and exploring others relevant to Selenium to deepen your understanding and expand your horizons.