Showing posts with label Print the menu and submenu option.. Show all posts
Showing posts with label Print the menu and submenu option.. Show all posts

Monday, June 2, 2014

Print the menu and submenu option of espncricinfo.com

Note- Please refer this example only when you have very good understanding of writing xpath.

import java.util.List;
import java.util.concurrent.TimeUnit;

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.interactions.Actions;


public class PrintMenuAndSubMenu {
   
    public static void main(String[] args) throws InterruptedException {
        WebDriver driver = new FirefoxDriver();
        driver.manage().timeouts().implicitlyWait(10, TimeUnit.SECONDS);
       
        driver.get("http://www.espncricinfo.com/");
        List<WebElement> mainMenu = driver.findElements(By.xpath("//div[@id='mainNav']//td[contains(@class,'nav')]/a")); //this will return all the main menu options total 15 from home button to Mobile
        Actions act = new Actions(driver);
       
        for(int i=1; i<mainMenu.size(); i++){ //here i has been initialized from 1 because we want to print from Series till Mobile
            String mainMenuName = mainMenu.get(i).getText();
            System.out.println("Main Menu Name- "+mainMenuName);
            String xpath = "//div[@id='mainNav']//td[contains(@class,'nav')][a[text()='"+mainMenuName+"']]"; //here xpath has been written for independent element of submenu so used []
               
            act.moveToElement(mainMenu.get(i)).perform(); //move the cursor over main menu , like over series sothat submenu will be visible
            Thread.sleep(2000);    //to get all the submenu in list
            List<WebElement> subMenuItems = driver.findElements(By.xpath(xpath+"//a[@class='PopupLinks']"));
            int sizeOfSubMenu = subMenuItems.size();
            //System.out.println("Number of submenu items:"+ subMenuItems.size());
            System.out.print("Submenu options of "+mainMenuName+" are: ");
            if(sizeOfSubMenu==0){
                System.out.print("There is no submenu option under "+mainMenuName);
            }
            //below for loop is to print submenu
            for(int j=0; j<sizeOfSubMenu; j++){
                System.out.print(j+")"+subMenuItems.get(j).getText()+", ");
               
                if(mainMenuName.equals("Features") && j==0){
                    List<WebElement> subMenuOptions = driver.findElements(By.xpath(xpath+"//span"));
                    //this loop is to print "Features" menu three options Regulars, Highlights and Opinion
                    for(int k=0; k<subMenuOptions.size(); k++){
                        j++;
                        System.out.print(j+")"+subMenuOptions.get(k).getText()+", ");
                    }
                    j=36;
             }
            }
            System.out.println();
            System.out.println("==============================================================================");
       
    }
        driver.quit();
}
}