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"));
}
}
POMExample:
/**
* 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"));
}
}
相关文章推荐
- Selenium的PageFactory & PageObject 在大型项目中的应用
- Selenium的PageFactory & PageObject 在大型项目中的应用
- Selenium的PageFactory & PageObject 在大型项目中的应用
- selenium page object & Page Factory
- Selenium的PO模式(Page Object Model)|(Selenium Webdriver For Python)
- appium():PageObject&PageFactory
- Page Object Model (Selenium, Python)
- Selenium的PO模式(Page Object Model)[python版]
- Selenium的PO模式(Page Object Model)[python版]
- Selenium的PO模式(Page Object Model)|(Selenium Webdriver For Python)
- Page Object Model (Selenium, Python)(一)
- selenium page object model
- Selenium的POM和PAGEFACTORY的理解
- Selenium Page Object Model-FindAll annotation
- PageObject&PageFactory
- Python+Selenium框架设计--- Page Object Model
- Page Object Model (Selenium + Python)(三)
- org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'selectcommoninfo' defined in ServletCont
- Spring Error creating bean with name 'sessionFactory ' defined in ServletContext resource [/WEB-INF/