Skip to main content

Page Object in selenium with example

Page Object Pattern is a good approach of implementing Automation tests. It is a language neutral pattern for representing a complete page or portion of a page in an Object Oriented manner. Pattern is a page object, which encapsulates the behavior of the page in an Object oriented manner. It need some programming skills too.

Why Page Object?

1| Maintenance
2| Readability of scripts
3| Separation of Concerns


Page Object Pattern | Page Factory

Lets start with an example using Google.com

SCENARIO 
1| Open URL
2| Search google
3| Assert page title




TEST CLASS | TC.java


package packagename;

import org.openqa.selenium.WebDriver;
import org.openqa.selenium.firefox.FirefoxDriver;
import org.openqa.selenium.support.PageFactory;
import org.testng.annotations.AfterTest;
import org.testng.annotations.BeforeTest;
import org.testng.annotations.Test;

public class TC {
 private WebDriver driver;
 public ASSERT Task; 

  @BeforeTest
 public void setUp() throws Exception {
  System.out.println("Instantiating Firefox Driver");
  driver = new FirefoxDriver();
 }

  @Test
 public void Test01() throws Exception {
  URL url = PageFactory.initElements(driver,
    URL.class);
  url.geturl();
  
 }

  @Test
 public void Test02() throws Exception {
  Task = PageFactory.initElements(driver,
    ASSERT.class);
  Task.search();  
  
  }

  @Test
 public void Test03() throws Exception {  
  Task = PageFactory.initElements(driver,
    ASSERT.class);  
  Task.assertsearch();

  }
  
  @AfterTest
 public void tearDown() throws Exception {
  driver.quit();
 }

}



Open Google | URL.java


package packagename;

import org.openqa.selenium.By;
import org.openqa.selenium.WebDriver;
import org.openqa.selenium.firefox.FirefoxDriver;
import org.testng.annotations.AfterClass;
import org.testng.annotations.BeforeClass;
import org.testng.annotations.Test;
import org.openqa.selenium.support.PageFactory;
import org.openqa.selenium.support.ui.WebDriverWait;

public class URL{
public WebDriver driver;
private String baseUrl;
private boolean acceptNextAlert = true;
private StringBuffer verificationErrors = new StringBuffer();

public URL(WebDriver driver) {
this.driver = driver;
driver.get("http://www.google.co.in");
}

public ASSERT geturl() {  
System.out.println("URL opened successfully");
return PageFactory.initElements(driver, ASSERT.class);
}


}

Search & Assert | last.java


package packagename;

import org.openqa.selenium.By;
import org.openqa.selenium.WebDriver;
import org.openqa.selenium.firefox.FirefoxDriver;
import org.testng.Assert;

public class ASSERT {

public WebDriver driver;

public ASSERT(WebDriver driver) {
this.driver = driver;
  //driver.get("https://seleniumworkz.wordpress.com/wp-admin/edit.php");
}
 
public void search() throws Exception{
//  search google
driver.findElement(By.name("q")).sendKeys("Prashanth Sams");
driver.findElement(By.name("q")).submit();
Thread.sleep(4000);
}

public void assertsearch() throws Exception{
//  assert google search
Boolean b = driver.getTitle().contains("Prashanth Sams");
System.out.println(b);
}
}

Comments

Popular posts from this blog

Jenkins CLI examples

Automate Jenkins with the CLI or the REST API Jenkins is used a lot to automate your build process and make it a real continuous integration process. But you can even take it a step further and automate the configuration of Jenkins itself.  In this short instruction I will show two ways to do this: the CLI and the REST API. With these capabilities you can for example write programs to create, backup, restore, start and view Jenkins jobs.  Download the Try-it-out-yourself code to provision an Ubuntu VM with Jenkins installed. This way you can immediately try the examples below.  The CLI   The Jenkins CLI is distributed inside the jenkins.war, but you have to download it before you can use it. Suppose your Jenkins url is: http://localhost:8080/jenkins Then the CLI can be downloaded like this:  wget http://localhost:8080/jenkins/jnlpJars/jenkins-cli.jar Note In the remainder of this document I assume the Jenkins url is http://localhost:8080/jenkins. You shoul

Jenkins Matrix Jobs

For many similar different combination build setup. Example Diff OS v/s Diff platform Configuration Matrix CHROME IE Test Module1 Test Module2 Test Module3 Test Module4 Plugin required:  matrix-project Wiki:  https://wiki.jenkins-ci.org/display/JENKINS/Matrix+Project+Plugin Location to download plugin: http://updates.jenkins-ci.org/download/plugins/ Install Plugin: Jenkins>Manage jenkins> Manage Plugin> Advansed> Browse and install Result Look like: Configuration: