欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

2:PO思想的实战 JavaAppium

程序员文章站 2022-04-14 11:19:25
PO思想的实战 JavaAppium说到自动化测试,大家提到的往往是PO设计思想。我简单说一下我对PO设计思想的理解:什么是PO思想?PageObject是一种测试设计模式减少冗余的代码和对代码进行管理,分离测试步骤及测试对象。PO的好处将测试用例及测试对象分离,提高用例可维护性,集中管理元素对象,代码可复用,降低成本,不同PO之间没有交叉,可以支持并行开发。以上为百度百科的说明,通俗点就是按照MVC的原则,实现界面Page,功能逻辑Controller,测试数据Data的分离,降低测试用例的复...

PO思想的实战 JavaAppium

说到自动化测试,大家提到的往往是PO设计思想。我简单说一下我对PO设计思想的理解:

什么是PO思想?
PageObject是一种测试设计模式减少冗余的代码和对代码进行管理,分离测试步骤及测试对象。

PO的好处
将测试用例及测试对象分离,提高用例可维护性,集中管理元素对象,代码可复用,降低成本,不同PO之间没有交叉,可以支持并行开发。

以上为百度百科的说明,通俗点就是按照MVC的原则,实现界面Page,功能逻辑Controller,测试数据Data的分离,降低测试用例的复杂度和维护难度。看过上一篇文章的现在应该就会明白分别对应的项目目录中的page,controller,data目录。

下面的我抖音为例,说明一下Page,Controller,Pager的写法

  1. 我们需要初始化一下项目:
public class Application extends Bootstrap{

    //系统初始化
    @Override
    public void init() {
        InputStream io = getClass().getResourceAsStream("app.properties");
        initConfig(io);
    }

    //注册数据模板
    @Override
    public void register() {
        APIDataCenter.getShareInstance().register(DySearchcKey.class);
        APIDataCenter.getShareInstance().upload();
    }


}

数据中心下一篇文章会讲到。

  1. 编写程序界面:
@SwipePage(pages = 0)
public class DyIndexPage extends BasePage {

    @AndroidElement(uiText = "关注",time = 10)
    public MobileElement follow;
    @AndroidElement(uiText = "推荐",time = 10)
    public MobileElement recommend;
    @AndroidElement(uiResourceId = "com.ss.android.ugc.aweme:id/bfq",time = 10)
    public MobileElement search;

    public DyIndexPage() {

    }

    public DyIndexPage(AppiumDriver driver) {
        super(driver);
    }
}

通过注解的方式查找元素,@SwipePage 解决元素不在首屏的问题,@AndroidElement用来查找具体元素,可以通过uitext,id,resource,class等 定位的具体用法可以去API网站:http://test.igood.wang

重点:界面类必须有一个无参的构造函数。

3.编写控制器


public class DyIndexController extends BaseController<DyIndexPage> {

    public DyIndexController(AppiumDriver driver) {
        super(driver);
    }
}

4.编写测试用例

public class DyTest extends BaseTest {

    @Test
    public void swipDy(){
        DyIndexController indexController = new DyIndexController(driver);
        Swipe.SwipeUp(driver,10);
    }

    @Override
    public String appType() {
        return "android";
    }

    @Override
    public Bootstrap bootstrap() {
        return new Application();
    }
}

效果如下:

https://igood.oss-cn-beijing.aliyuncs.com/DyExample.mp4

本例只罗列了基本结构,控制器中并未添加具体业务逻辑。以后会逐渐丰富起来。
Demo下载地址:https://igood.oss-cn-beijing.aliyuncs.com/DYExample.zip

本人诚接各类商业化App自动化测试工作,如果您是一家公司,想借助自动化测试解决当前服务问题,可以联系我。微信号:CompanyAiHelper

本文地址:https://blog.csdn.net/qq_20485125/article/details/108985222