Object Repository in XML file (XML in different format)

Create a file ObjectRepo.xml.  under objectRepositoryFile package. Then copy the following lines.

ObjectRepo.xml
<?xml version = "1.0"?>
<OR>
   <Page name = "HomePage">
      <element name="lnk_myaccount" type = "link">My Account</element>
      <element name="lnk_login" type = "link">Login</element>     
   </Page>
  
   <Page name = "LoginPage">
      <element name="txt_email" type = "name">username</element>
      <element name="txt_password" type = "name">password</element>
      <element name="btn_login" type = "xpath">.//*[@id='loginfrm']/div[4]/button</element>
   </Page>
  
   <Page name = "MyAccountPage">
      <element name="lnk_accname" type = "link">John</element>
      <element name="lnk_logout" type = "link">Logout</element>
   </Page>
</OR>
  
Create 2  classes under objectRepositoryMain package and  name them XMLObjectMapNew.java and XMLObjectRepositoryNew.java. Then copy following codes in respective file.

XMLObjectMapNew.java
package objectRepositoryMain;

import java.io.File;
import javax.xml.parsers.DocumentBuilder;
import javax.xml.parsers.DocumentBuilderFactory;
import org.openqa.selenium.By;
import org.w3c.dom.Document;
import org.w3c.dom.Element;
import org.w3c.dom.Node;
import org.w3c.dom.NodeList;

public class XMLObjectMapNew {

       Document doc;
       public XMLObjectMapNew(String path){
             
              try{
                     File inputfile = new File(path);  
                     DocumentBuilderFactory dbFactory = DocumentBuilderFactory.newInstance();
            DocumentBuilder docbuilder = dbFactory.newDocumentBuilder();
            doc = docbuilder.parse(inputfile);
            doc.getDocumentElement().normalize();
              }catch(Exception e){
                    
                     System.out.println("Exception caught");
              }
       }
      
       public By getLocator(String element)throws Exception{
             
              String locatorType=null;
        String locatorValue = null;
       
        System.out.println("Root element :" + doc.getDocumentElement().getNodeName());                

           //Get list of all elements
           NodeList elementlist = doc.getElementsByTagName("element");
                  
           //Traverse individual element
           for(int cnt=0;cnt < elementlist.getLength(); cnt++){                   
              Node nNode1 = elementlist.item(cnt);
                  
               if (nNode1.getNodeType() == Node.ELEMENT_NODE){                                 
                     Element ele = (Element) nNode1;
                     String elementname=ele.getAttribute("name");
                           
                   //If the element is matched to the one which you search
                   if(elementname.equals(element)){
                                                                                                                                                      
                          String propertytype=ele.getAttribute("type");
                          String propertyvalue=ele.getTextContent();
                                  
                          System.out.println("Element Name: "+ elementname);
                          System.out.println("Element type : "+ propertytype);
                          System.out.println("Element value : "+ propertyvalue);
                                        
                          locatorType=propertytype;
                          locatorValue=propertyvalue;
                                     
                          break;
                   }                                                                                                                                  
               }                                                    
           }
                          
              switch(locatorType){
             
              case "id": return By.id(locatorValue);
              case "xpath": return By.xpath(locatorValue);
              case "link":  return By.partialLinkText(locatorValue);
              case "name":  return By.name(locatorValue);
              default: throw new Exception("Unknown locator type '" + locatorType + "'");
             
              }            
       }
}

XMLObjectRepositoryNew.java

package objectRepositoryMain;

import java.util.concurrent.TimeUnit;
import org.openqa.selenium.WebDriver;
import org.openqa.selenium.firefox.FirefoxDriver;


public class XMLObjectRepositoryNew {
      
       public static WebDriver driver;
       public static String URL="http://www.phptravels.net/";
       public static String objectRepopath="D:\\Automation\\AutomationFramework\\DesignObjectRepository\\src\\objectRepositoryFile\\ObjectRepo.xml";
       public static String browserpath="D:\\Automation\\AutomationFramework\\DesignObjectRepository\\Lib\\BrowserDrivers\\geckodriver-v0.18.0-win32\\geckodriver.exe";
      
       public static void main(String[] args) throws Exception{
              // TODO Auto-generated method stub

              XMLObjectMapNew objMap=new  XMLObjectMapNew(objectRepopath);
              System.setProperty("webdriver.gecko.driver",browserpath );
              driver=new FirefoxDriver();
              driver.manage().timeouts().implicitlyWait(10, TimeUnit.SECONDS);
              driver.get(URL);
             
              //Thread.sleep(5000);
             
              //Home page
              driver.findElement(objMap.getLocator("lnk_myaccount")).click();
              driver.findElement(objMap.getLocator("lnk_login")).click();
             
              //Thread.sleep(5000);
             
              //Login Page
              driver.findElement(objMap.getLocator("txt_email")).sendKeys("user@phptravels.com");
              driver.findElement(objMap.getLocator("txt_password")).sendKeys("demouser");
              driver.findElement(objMap.getLocator("btn_login")).click();
             
              //Thread.sleep(5000);
             
              //My Account
              driver.findElement(objMap.getLocator("lnk_accname")).click();
              driver.findElement(objMap.getLocator("lnk_logout")).click();
             
              driver.close();
       }
}

Now the project structure in eclipse should look like the given bellow image.


No comments:

Post a Comment