Page Object Model (POM) & Page Factory in Selenium: Ultimate Guide

来源:互联网 发布:社交软件发展前景 编辑:程序博客网 时间:2024/05/16 09:12

POM: Page Object Model


POMExample:


package pages;

/**
 * Created by wcy on 2016/11/8.
 *  ALL UI pages for POM(page object model) Classes
 */
import org.openqa.selenium.By;
import  org.openqa.selenium.WebDriver;
public class Guru99Login {
    WebDriver driver;
    By username=By.name("uid");
    By password=By.name("pwd");
    By titleText=By.className("barone");
    By login=By.name("btnLogin");

    public Guru99Login(WebDriver driver){
        this.driver=driver;
    }

    //set user name in textbox
    public void setUserName(String strUserName){
        driver.findElement(username).sendKeys(strUserName);
    }

    //set password in password textbox
    public void setPassword(String strPassword){
        driver.findElement(password).sendKeys(strPassword);
    }

    //click on login button
    public void clickLogin(){
        driver.findElement(login).click();
    }

    //get the title of login page
    public String getLoginTitle(){
        return  driver.findElement(titleText).getText();
    }

    /**

     * This POM method will be exposed in test case to login in the application

     * @param strUserName

     * @param strPasword

     * @return

     */

    public void loginToGuru99(String strname,String strpwd){
        this.setUserName(strname);
        this.setPassword(strpwd);
        this.clickLogin();
    }

}

----------------------------------------------------------------------------------------------------------------

package pages;

/**
 * Created by wcy on 2016/11/8.
 * ALL UI pages for POM(page object model) Classes
 */
import  org.openqa.selenium.WebDriver;
import  org.openqa.selenium.By;
import org.openqa.selenium.WebElement;

public class Guru99HomePage {
    WebDriver driver;
    By homePageUserName=By.xpath("//table/tr[@class='heading3']");

    public Guru99HomePage(WebDriver driver){
        this.driver=driver;
    }

    //get the user name from home page
    public String getHomePageUserName(){
        return  driver.findElement(homePageUserName).getText();
    }
}

---------------------------------------------------------------------------------------------

package test;

/**
 * Created by wcy on 2016/11/8.
 * Test Methods
 */
import org.testng.annotations.BeforeTest;
import org.testng.annotations.Test;
import  pages.Guru99Login;
import  pages.Guru99HomePage;
import org.openqa.selenium.firefox.FirefoxDriver;
import  org.openqa.selenium.WebDriver;
import org.testng.Assert;

import java.util.concurrent.TimeUnit;

public class Test99GuruLogin {
    WebDriver driver;
    Guru99HomePage objHomePage;
    Guru99Login objLogin;

    @BeforeTest
    public void setup(){
        driver=new FirefoxDriver();
        driver.manage().timeouts().implicitlyWait(10, TimeUnit.SECONDS);
        driver.get("http://demo.guru99.com/V4/");
    }
    /**

     * This test case will login in http://demo.guru99.com/V4/

     * Verify login page title as guru99 bank

     * Login to application

     * Verify the home page using Dashboard message

     */
     @Test(priority = 0)
    public void test_Home_Page_Appear_Correct(){

         //Create Login Page object
         objLogin=new Guru99Login(driver);
         //Verify login page title
         String loginPageTitle=objLogin.getLoginTitle();
         Assert.assertTrue(loginPageTitle.toLowerCase().contains("guru99 bank"));
         //login to application
         objLogin.loginToGuru99("mgr123","mgr!23");
         // go the next page
         objHomePage=new Guru99HomePage(driver);
         //Verify home page
         Assert.assertTrue(objHomePage.getHomePageUserName().toLowerCase().contains("manger id:mgr123"));
     }
}

POMFactory

Example:



package pagefactory;

import org.openqa.selenium.WebDriver;
import org.openqa.selenium.WebElement;
import org.openqa.selenium.support.FindBy;
import org.openqa.selenium.support.PageFactory;

/**
 * Created by wcy on 2016/11/8.
 */
public class Guru99HomePageFactory {
    WebDriver driver;

    @FindBy(xpath = "//table/tr[@class='heading3']")
    WebElement homepageUserName;

    public Guru99HomePageFactory(WebDriver driver){
        this.driver=driver;
        //This initElements method will create all WebElements
        PageFactory.initElements(driver,this);
    }

    //Get the User name from Home Page
    public  String getHomepageUserName(){
        return  homepageUserName.getText();
    }
}

---------------------------------------------------------------------------------------

package pagefactory;

import org.openqa.selenium.WebDriver;
import org.openqa.selenium.WebElement;
import org.openqa.selenium.support.FindBy;
import org.openqa.selenium.support.PageFactory;

/**
 * Created by wcy on 2016/11/8.
 */
public class Guru99LoginFactory {

    /**

     * All WebElements are identified by @FindBy annotation

     */
    WebDriver driver;

    @FindBy(name="uid")
    WebElement userName;

    @FindBy(name="pwd")
    WebElement password;

    @FindBy(className = "barone")
    WebElement titleText;

    @FindBy(name = "btnLogin")
    WebElement login;

    public  Guru99LoginFactory(WebDriver driver){
        this.driver=driver;
        //This initElements method will create all WebElements
        PageFactory.initElements(driver,this);
    }

    // //Set user name in textbox
    public  void setUserName(String strUserName){
        userName.sendKeys(strUserName);
    }
    //Set password in password textbox
    public  void setPassword(String strpwd){
        password.sendKeys(strpwd);
    }
    //Click on login button
    public void clickLogin(){
        login.click();
    }
    //Get the title of Login Page
    public String getLoginTitle(){
        return  titleText.getText();
    }

    /**

     * This POM method will be exposed in test case to login in the application

     * @param strUserName

     * @param strPasword

     * @return

     */

    public void loginToGuru99(String user ,String pwd){
        //FILL USER NAME
        this.setUserName(user);
        //Fill password
        this.setPassword(pwd);
        //Click Login button
        this.clickLogin();
    }

}

-----------------------------------------------------------------------------------------------------

package test;

import org.openqa.selenium.WebDriver;
import org.openqa.selenium.firefox.FirefoxDriver;
import org.testng.Assert;
import org.testng.annotations.BeforeTest;
import org.testng.annotations.Test;
import pagefactory.Guru99HomePageFactory;
import pagefactory.Guru99LoginFactory;

import java.util.concurrent.TimeUnit;

/**
 * Created by wcy on 2016/11/8.
 */
public class Test99GuruLoginPageFactory {
    WebDriver driver;
    Guru99LoginFactory objLoginFac;
    Guru99HomePageFactory objHomePageFac;

    @BeforeTest
    public  void setup(){
        driver=new FirefoxDriver();
        driver.manage().timeouts().implicitlyWait(10, TimeUnit.SECONDS);
        driver.get("http://demo.guru99.com/V4/");
    }

    /**

     * This test go to http://demo.guru99.com/V4/

     * Verify login page title as guru99 bank

     * Login to application

     * Verify the home page using Dashboard message

     */

    @Test
    public void test_Home_Page(){
        //Create login object
        objLoginFac=new Guru99LoginFactory(driver);
        //Verify login page title
        String loginpageTitle=objLoginFac.getLoginTitle();
        Assert.assertTrue(objLoginFac.getLoginTitle().toLowerCase().contains("guru99 bank"));

        //login to application
        objLoginFac.loginToGuru99("mgr123","mgr!23");
        //go to next page
        objHomePageFac=new Guru99HomePageFactory(driver);
        //Verify home page
        Assert.assertTrue(objHomePageFac.getHomepageUserName().toLowerCase().contains("manger id : mgr123"));
    }

}





0 0
原创粉丝点击