TestingDocs.com
Software Testing website
  • JBehave
  • Selenium
  • Testlink
  • Maven
  • Git
  • RAPTOR
  • Questions

Selenium Automation: Page Objects

Tweet
Pin it

In this post, we will discuss about Page Objects .The most important aspect while authoring real time web application tests using Selenium Webdriver.

What is a Page object?

A page object is an object that we use as a representation of an HTML element to abstract them in our Selenium tests. So, our Selenium tests will not interact with HTML code directly, but with page objects that use selectors to refer to the HTML code.We may create independent classes for declaring our page objects. The class should group together all the page objects that belong to the same page. The tests and page objects should be independent one of the other.

Let us build a sample PageObject for a Login page below:

 

package com.testingdocs.testng.sample;

import org.openqa.selenium.By;
import org.openqa.selenium.WebDriver;

public class LoginPage {

    private final WebDriver driver;
    private By username = By.id("userID");
    private By password = By.id("pwd");
    private By loginSubmit = By.id("submit");

    public LoginPage(WebDriver driver)
    {
        this.driver = driver;

    }

    public LoginPage typeUserID(String userID) {
        driver.findElement(username).sendKeys(userID);
        return this;    
    }

    public LoginPage typePassword(String pass) {
              driver.findElement(password).sendKeys(pass);
        return this;    
    }

    public void submitLogin()
    {
    driver.findElement(loginSubmit).submit();
      }

    public void login(String userID, String password) {
        typeUserID(userID);
        typePassword(password);
        
    }
}

 

Now a sample test which instantiates the page object with out the knowledge of html elements and the locating mechanism of the login elements.

package com.testingdocs.testng.sample;

import org.openqa.selenium.WebDriver;
import org.openqa.selenium.firefox.FirefoxDriver;
import org.testng.annotations.Test;

public class SampleLoginTest
{
  WebDriver driver = new FirefoxDriver();
  LoginPage lpage = new LoginPage(driver) ;
  
  @Test
  public void logintest()
  {
  driver.get("Sample_Login_Page_URL");	
  lpage.login("1001", "mypassword1234$");
  .....
        .....
  }
}

 

Advantages of Page object

Firstly, we can take advantage of object oriented approach like abstraction , encapsulation etc by using page objects.

Shield tests against application HTML code changes. Changes will only affect the page object, and  not our selenium tests
Using page object we will avoiding redundant code.
We can have page object in only one place and refer them in our tests.

Page Object FindBy Annotation

Learning PageFactory

PageObject may need not represent an entire page. It may represent a section that appears many times within a site or page. The motto is that there is only one place in your entire test suite with knowledge of the structure of the HTML of a particular page or part of it.In conclusion, using page object we can write robust web tests without worrying about the HTML web page changes.

 

Selenium WebDriver Tutorials on this website can be found at:

https://www.testingdocs.com/selenium-webdriver-tutorial

For more details on the Selenium, visit the official website at:

https://www.selenium.dev/

Related Posts

Download Selenium Components

Selenium /

Getting Started with Selenium

Selenium /

Selenium 3.0 and Mozilla GeckoDriver

SauceLabs Website

Selenium /

SauceLabs : Running an Example Sample Test

Create a new Project in Selenium IDE

Selenium /

Create a new Project in Selenium IDE

NodeRegisteredCommandPrompt

Selenium /

Hub and Nodes Configuration

Tag Cloud

Agile Appium Tutorials C++ Eclipse Tutorials Git Tutorials IntelliJ Tutorials Java Java Tutorial JBehave Jenkins Jira Cloud JUnit Tutorial Maven Object-oriented Flowchart Python Tutorials Raptor Flowcharts Selenium IDE TestLink Tutorials

Random Posts

  • TestLink Bitnami Cloud Image
    Overview In this tutorial, we will see the steps

    Read more

  • Code Coverage Tools
    Overview Let’s look at some of the code coverage

    Read more

  • pCloudy Continuous Testing Cloud
    Overview pCloudy is a continuous testing cloud

    Read more

Latest Tweets

Tweets by @TestingDocs

Back to Top

TestingDocs.com

Privacy Policy

Cookie Policy

  • JBehave
  • Selenium
  • Testlink
  • Maven
  • Git
  • RAPTOR
  • Questions
www.TestingDocs.com | All Rights Reserved