Wednesday, November 26, 2014

POM

POM

  • Page Object Model is a design pattern 
  • It is useful to create object repository for a web page
  • Page Object Model advantage is that your operations and flow of UI should be seperated from verification 
  • Object repository becomes independent of test cases hence can be used for various purpose e.g. we can integrate it with TestNG framework

Sample POM

Structure

                          Page (POM)
        • Page1      
                         TestScript 
        • TestScript1

Code-      

Page1            

package page;
import org.openqa.selenium.By
import org.openqa.selenium.WebDriver
import org.openqa.selenium.chrome.ChromeDriver;

public class Page1
{
WebDriver driver;
By title=By.name("titleName");

public Page1(WebDriver driver)
{
this.driver=driver;
}
public String getPageTitle()
{
return driver.findElement(title).getText();
}
}

TestScript1

package TestScript
import org.openqa.selenium.WebDriver
import org.openqa.selenium.chrome.ChromeDriver;
import Page.Page1;
import org.testng.annotations.BeforeTest
import org.testng.annotations.Test
import org.testng.Assert; //This is used if we are using assert for verification

public class TestScript1
{
WebDriver driver;
Page1 p;


@BeforeTest
public void setupPage1(WebDriver driver)
{
System.setProperty("webdriver.chrome.driver",chromeDriverPath);
driver=new ChromeDriver();
driver.manage().window().maximize();
driver.get(urlToPage1);

}
@Test(priority=0, enabled=true)
public void verifyPageTitle()
{
p=new Page1(driver);
Assert.assertTrue(p.getPageTitle().toLowerCase().contains("page title"));
}
}

1 comment: