du-hong

1.简介

上一篇宏哥用PageFactory实现了POM,宏哥再介绍一下如果不用PageFactory如何实现POM。

2.项目实战

在这里宏哥以百度首页登录的例子,如果用POM实现,在测试脚本中实际代码就几行。

2.1代码设计

1.先新建一个pageObjects包,然后在pageObjects包新建一个百度主页类:BaiduHomePage1,代码设计如下图所示:

2.再次新建一个testSuites包,然后在testSuites包下新建一个测试类:TestWithPOM1

2.2参考代码

1.BaiduHomePage1

package pageObjects;
 
import java.util.concurrent.TimeUnit;
 
import org.openqa.selenium.By;
import org.openqa.selenium.WebDriver;
 
/**
 * @author 北京-宏哥
 * 
 * @公众号:北京宏哥
 * 
 * 《手把手教你》系列基础篇(八十八)-java+ selenium自动化测试-框架设计基础-POM设计模式实现-下篇(详解教程)
 *
 * 2022年3月20日
 */

public class BaiduHomePage1 {
    
    WebDriver driver;
    // 元素定位
    //登录链接
    By login_link = By.xpath("//*[@id='u1']/a[1]");
   
    //输入用户名框
    By inputBox_username = By.xpath("//*[@id='TANGRAM__PSP_11__userName']");
    
    //输入密码
    By inputBox_password = By.xpath("//*[@id='TANGRAM__PSP_11__passwordWrapper']/input[2]");
    
    //登录按钮
    By login_submitBtn = By.id("TANGRAM__PSP_11__submit");
    
    // 业务逻辑和操作方法
    // 构造方法
    public BaiduHomePage1(WebDriver driver){
        this.driver = driver;
    }
    
    //点击登录链接
    public void clickLoginLink(){
        
        // 点击账户登录
        driver.findElement(login_link).click();
    }
    
    // 登录步骤拆分-输入用户名
    public void inputUsername(String username){
        driver.findElement(inputBox_username).sendKeys(username);
        
    }
    
    // 登录步骤拆分-输入密码
    public void inputPassword(String password){
        driver.findElement(inputBox_password).sendKeys(password);
        
    }
    
    // 点击登录按钮
    public void clickLoginBtn(){
        driver.findElement(login_submitBtn).click();
        driver.manage().timeouts().implicitlyWait(2, TimeUnit.SECONDS);
    }
    
    //重构一个登录方法
    public void login(String name, String pass){
        
        // 点击账户登录
        driver.findElement(login_link).click();
        
        driver.findElement(inputBox_username).sendKeys(name);
        driver.findElement(inputBox_password).sendKeys(pass);
        driver.findElement(login_submitBtn).click();
        driver.manage().timeouts().implicitlyWait(2, TimeUnit.SECONDS);
        
    }
 
}

2.TestWithPOM1

package testSuites;

import org.openqa.selenium.WebDriver;
import org.openqa.selenium.chrome.ChromeDriver;
import org.testng.annotations.BeforeClass;
import org.testng.annotations.Test;

import pageObjects.BaiduHomePage1;

/**
 * @author 北京-宏哥
 * 
 * @公众号:北京宏哥
 * 
 * 《手把手教你》系列基础篇(八十八)-java+ selenium自动化测试-框架设计基础-POM设计模式实现-下篇(详解教程)
 *
 * 2022年3月20日
 */

public class TestWithPOM1 {
    
     WebDriver driver;
    
    @BeforeClass
    public void setUp() throws Exception{
        
        System.setProperty("webdriver.chrome.driver", ".\\Tools\\chromedriver.exe");  
       driver = new ChromeDriver();  
       driver.manage().window().maximize();  
       driver.get("https://www.baidu.com/");  
       Thread.sleep(2000);  
    }
    
    @Test
    public void testLogin() throws InterruptedException{
        
        BaiduHomePage1 hp = new BaiduHomePage1(driver);
        
        hp.clickLoginLink();
        Thread.sleep(2000); 
        hp.inputUsername("user1");
        hp.inputPassword("123456");
        hp.clickLoginBtn();
        
    }

}

2.3运行代码

1.运行代码,右键Run AS->TestNG Suite,控制台输出,如下图所示:

2.运行代码后电脑端的浏览器的动作,如下小视频所示:

3.小结

宏哥在后续的框架中也会使用PageFactory,毕竟人家都封装好了,你可以用现成的,为啥还要自己费劲封装了。

   好了,时间也不早了,今天就分享和讲解到这里,希望对您有所帮助,感谢您耐心地阅读!

相关文章: