您的位置:首页 > 移动开发 > Objective-C

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

2016-11-08 16:01 711 查看
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

a656

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

    }

}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: