Find broken links on the web page using Selenium WebDriver with Java

Sometimes, we might come across the situation when we need to validate each and every link present on the web page.

Validating each and every Hyperlink present on the webpage manually requires a huge effort.

Let us say, you want to validate all the links originating from google.co.in. Google home page has 48 different links like Gmail, Youtube, Images, different languages links etc. Now, if check the working of each and link manually, it will take a huge time.

So, what we can do is, we can automate the entire manual process using Selenium WebDriver and HttpClient classes.

import java.io.IOException;
import java.util.List;

import org.apache.http.HttpResponse;
import org.apache.http.client.methods.HttpGet;
import org.apache.http.impl.client.DefaultHttpClient;
import org.openqa.selenium.By;
import org.openqa.selenium.WebDriver;
import org.openqa.selenium.WebElement;
import org.openqa.selenium.firefox.FirefoxDriver;
import org.openqa.selenium.firefox.FirefoxProfile;

public class FindBrokenlinks {

             public static void main(String[] args) throws IOException, Exception {

                          FirefoxProfile fp = new FirefoxProfile();
                          fp.setPreference(“xpinstall.signatures.required”, false);

                          WebDriver driver = new FirefoxDriver(fp);
                          driver.manage().window().maximize();
                          driver.get(“http://google.co.in/”);

                          boolean isLinkValid = false;

                          List<WebElement> linksList = driver.findElements(By.tagName(“a”));
                          System.out.println(“Total links count : ” + linksList.size());

                          System.out.println(“Link details : “);
                          for (int i = 0; i < linksList.size(); i++) {
                                 String url = linksList.get(i).getAttribute(“href”);
                                 System.out.println(i + 1 + ” : ” + url);
                          }

                           for (int i = 0; i < linksList.size(); i++) {
                                 String url = linksList.get(i).getAttribute(“href”);

                                 if (url != null) {
                                        isLinkValid = getResponseCode(url);
                                        if (isLinkValid) {
                                                System.out.println(i + 1 + “. ” + url + “is Valid link”);
                                                System.out.println();
                                         } else {
                                                System.out.println(i + 1 + “. ” + url + “is Broken link”);
                                                System.out.println();
                                         }
                                  } else {
                                         System.out.println(i + 1 + “. ” + url + “is NULL link”);
                                         System.out.println();
                                         continue;
                                  }
                           }
                       driver.close();
                 }

           public static boolean getResponseCode(String url) {
                        boolean isResponseValid = false;
                       try {
                                HttpResponse urlresp = new DefaultHttpClient().execute(new HttpGet(url));
                                int responseCode = urlresp.getStatusLine().getStatusCode();
                                if ((responseCode == 404) || (responseCode == 505)) {
                                        isResponseValid = false;
                                } else {
                                       isResponseValid = true;
                               }
                        } catch (Exception e) {
                               System.out.println(e);
                        }
                return isResponseValid;
            }
}

 

Advertisements

#find-broken-links-using-selenium-webdriver, #find-invalid-links-using-selenium-webdriver