JavaApp自动化测试系列[v1.0.0][Page Object模式]

Page Object模式

页面对象封装

在项目结构中新增页面元素对象的package,在该package下新增三个页面对象类,分别为HomePage,RegisterPage,RegisterVerifyPage,代码如下

package org.davieyang.pages;
import io.appium.java_client.android.AndroidDriver;
import org.openqa.selenium.By;


public class HomePage {
    AndroidDriver<?> driver;
    public HomePage(AndroidDriver<?> driver){
        this.driver = driver;
    }

    private static By startRegister_btn = By.id("startUserRegistration");
    public RegisterPage navigate_register_page(){
        driver.findElement(startRegister_btn).click();
        // 返回RegisterPage页面对象
        return new RegisterPage(driver);
    }
}

package org.davieyang.pages;
import org.openqa.selenium.By;
import io.appium.java_client.android.AndroidDriver;

public class RegisterPage {
    AndroidDriver<?> driver;
    public RegisterPage(AndroidDriver<?> driver){
        this.driver = driver;
    }

    public static By username_txt = By.id("inputUsername");
    public static By email_txt = By.id("inputEmail");
    public static By password_txt = By.id("inputPassword");
    public static By name_txt = By.id("inputName");
    public static By language_sel = By.id("input_preferedProgrammingLanguage");
    public static By prgLanguage = By.name("Scala");
    public static By accept_check = By.id("input_adds");
    public static By register_btn = By.id("btnRegisterUser");

    public RegisterVerifyPage register_sucess(String username, String email, String password, String name){
        driver.findElement(username_txt).sendKeys(username);
        driver.findElement(email_txt).sendKeys(email);
        driver.findElement(password_txt).sendKeys(password);
        driver.findElement(name_txt).clear();
        driver.findElement(language_sel).sendKeys(name);
        driver.findElement(prgLanguage).click();
        driver.findElement(accept_check).click();
        driver.findElement(register_btn).click();
        // 返回RegisterVerifyPage页面对象
        return new RegisterVerifyPage(driver);
    }




}

package org.davieyang.pages;
import org.openqa.selenium.By;
import io.appium.java_client.android.AndroidDriver;

public class RegisterVerifyPage {
    AndroidDriver<?> driver;
    public RegisterVerifyPage(AndroidDriver<?> driver){
        this.driver = driver;
    }

    public static By label_name_data = By.id("label_name_data");
    public String get_name_value(){
        return driver.findElement(label_name_data).getText().toString();
    }
}

PO模式下的测试代码

修改之前的测试代码,如下所示

package org.davieyang.testscripts;
import io.appium.java_client.android.AndroidDriver;
import java.io.File;
import java.net.URL;
import java.util.concurrent.TimeUnit;

import io.appium.java_client.android.AndroidElement;
import org.davieyang.pages.HomePage;
import org.davieyang.pages.RegisterPage;
import org.davieyang.pages.RegisterVerifyPage;
import org.openqa.selenium.WebElement;
import org.openqa.selenium.remote.DesiredCapabilities;
import org.testng.Assert;
import org.testng.annotations.AfterMethod;
import org.testng.annotations.BeforeMethod;
import org.testng.annotations.Test;
import io.appium.java_client.remote.AndroidMobileCapabilityType;
import io.appium.java_client.remote.AutomationName;
import io.appium.java_client.remote.MobileCapabilityType;
public class TestRegister
{
    AndroidDriver<AndroidElement> driver;

    @BeforeMethod
    public void setUp() throws Exception{
        DesiredCapabilities capabilities = new DesiredCapabilities();
        // File appDir = new File("E:\\");
        // File app = new File(appDir, "selendroid-test-app-0.17.0.apk");
        capabilities.setCapability("deviceName", "Redmi 3");
        capabilities.setCapability("udid", "claeae297d72");
        capabilities.setCapability("platformVersion", "5.1.1");
        capabilities.setCapability("platformName", "Android");
        capabilities.setCapability("app", "app.getAbsolutePath()");
        // capabilities.setCapability("automationName", AutomationName.APPIUM);
        capabilities.setCapability("appPackage", "io.selendroid.testapp");
        capabilities.setCapability("appActivity", ".HomeScreenActivity");
        capabilities.setCapability("unicodeKeyboard", "True");
        capabilities.setCapability("noSign", "True");
        driver = new AndroidDriver<>(new URL("http://127.0.0.1:4723/wd/hub"), capabilities);
        driver.manage().timeouts().implicitlyWait(30, TimeUnit.SECONDS);
}
    @Test
    public void test_Register_success(){
        HomePage homePage = new HomePage(driver);
        RegisterPage registerPage = homePage.navigate_register_page();
        RegisterVerifyPage registerVerifyPage = registerPage.register_sucess("davieyang",
                "[email protected]","111111", "Daveiyang.D.Y");
        Assert.assertEquals(registerVerifyPage.get_name_value(), "Daveiyang.D.Y");

    }
    @AfterMethod
    public void tearDown(){
        driver.quit();
    }
}

猜你喜欢

转载自blog.csdn.net/dawei_yang000000/article/details/108406357
今日推荐