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
- 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"));
}
}
