2:PO思想的实战 JavaAppium
PO思想的实战 JavaAppium
说到自动化测试,大家提到的往往是PO设计思想。我简单说一下我对PO设计思想的理解:
什么是PO思想?
PageObject是一种测试设计模式减少冗余的代码和对代码进行管理,分离测试步骤及测试对象。
PO的好处
将测试用例及测试对象分离,提高用例可维护性,集中管理元素对象,代码可复用,降低成本,不同PO之间没有交叉,可以支持并行开发。
以上为百度百科的说明,通俗点就是按照MVC的原则,实现界面Page,功能逻辑Controller,测试数据Data的分离,降低测试用例的复杂度和维护难度。看过上一篇文章的现在应该就会明白分别对应的项目目录中的page,controller,data目录。
下面的我抖音为例,说明一下Page,Controller,Pager的写法
- 我们需要初始化一下项目:
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();
}
}
数据中心下一篇文章会讲到。
- 编写程序界面:
@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
上一篇: mac Android自动化环境搭建
推荐阅读
-
python实现H2O中的随机森林算法介绍及其项目实战
-
EditPlus中的正则表达式 实战(2)
-
linux服务器被植入ddgs、qW3xT.2挖矿病毒的处理实战记录
-
python实现H2O中的随机森林算法介绍及其项目实战
-
2:PO思想的实战 JavaAppium
-
多测师肖sir_高级金牌讲师_第2个月po教学之实战(002)
-
HTML5实战与剖析之媒体元素(2、媒体元素的属性)
-
Kotlin入门实战:2、 Android 创建一个简单的 Kotlin 应用程序
-
机器学习实战学习笔记(二)-KNN算法(2)-使用KNN算法进行手写数字的识别
-
基于机器学习(machine learning)的SEO实战日记2--寻找切入点