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