APP自动化框架LazyAndroid使用手册(4)--测试模板工程详解
概述
前面的3篇博文分别对lazyAndroid的框架简介、元素抓取和核心API进行了说明,本文将基于框架给出的测试模板工程,详细阐述下使用该框架进行安卓UI自动化测试的步骤。
模板工程
先来看一下模板工程中包含哪些东西:
图中标注说明:
1是bean层,是lazy-uiautomaterviewer自动生成的java代码,是基于目标控件xpath自动定义的变量。
2是page层,是基于bean层代码封装的基本操作,一般以页面为单位。
3是test层代码,是基于page层操作写的测试case。
4是待测试的目标apk。
5是测试失败的截图,主要是方便排查case挂掉的原因。
6是工程的pom文件,主要是不要忘了引入lazyAndroid的jar包。
7是一个配置文件,里面有3个参数,含义看看注释就能明白了。
使用LazyAndroid进行测试的步骤
使用LazyAndroid框架进行安卓UI自动化测试,一般需要分一下几步走:
1.建立maven+testng的测试工程(非强制要求),导入lazyAndroid的jar包(需要事先将jar包deploy到某个maven仓库)。
2.确定测试功能需要覆盖哪些页面和控件,使用lazy-uiautomaterviewer导出目标页面(控件)对应的java文件。具体方法请参考:http://blog.csdn.net/kaka1121/article/details/53301517
例如,测试京东钱包的转账功能需要导出如下页面的java文件:
3.开始书写page层代码,封装基本操作,例如登陆、转账、付款等。
例如,登陆操作:
/**
* 登陆操作
*/
public void login() {
logger.info("login by jdpay account!");
todayBean.textViewToday.expectElementExistOrNot(true);
todayBean.textViewMine.expectElementExistOrNot(true);
todayBean.textViewMine.click();
lazyDriver.handleFailure("screen test:");
mineBean.login.expectElementExistOrNot(true);
mineBean.login.click();
loginBean.jdpayAccount.expectElementExistOrNot(true);
loginBean.jdpayAccount.click();
loginBean.editTextPhone.input("13034631475");
loginBean.nextStep.click();
loginBean.editjdPayTextPwd.expectElementExistOrNot(true);
loginBean.editjdPayTextPwd.input("haha123");
loginBean.jdpayLogin.click();
lazyDriver.swipeToLeft();
}
这里需要注意下,page层的构造函数需要使用LazyDriver实例化该page层用到的各个bean层的类:
/**
* 构造函数
* @param aLazyDriver
*/
public DemoPage(LazyDriver aLazyDriver) {
lazyDriver = aLazyDriver;
driver = lazyDriver.getDriver();
todayBean = new TodayBean(driver);
new LifeBean(driver);
lifeBean2 = new LifeBean2(driver);
mineBean = new MineBean(driver);
loginBean = new LoginBean(driver);
}
4.调用page的方法,完成test层测试case的书写。例如登陆功能测试:
/**
* 登陆测试
*/
@Test
public void loginTest() {
demoPage.login();
}
5.启动Appium,run as “testNG test” 运行、调试测试代码(别忘了把手机连上电脑)。大家也可以使用junit等测试框架,或者直接在main函数中练练手。(Appium的安装和启动方法,比较简单,大家自行百度)
大家可以下载模板工程练练手,熟悉后就可以开始自己的app测试了。模板工程下载地址:http://download.csdn.net/detail/kaka1121/9685943,如果使用过程有任何问题,欢迎大家留言
APP自动化框架LazyAndroid使用手册(4)--测试模板工程详解的更多相关文章
- APP自动化框架LazyAndroid使用手册(2)--元素自动抓取
作者:黄书力 概述 前面的一篇博文简要介绍了安卓自动化测试框架LazyAndroid的组成结构和基本功能,本文将详细描述此框架中元素自动抓取工具lazy-uiautomaterviewer的使用方法. ...
- APP自动化框架LazyAndroid使用手册(1)--框架简介
作者:cryanimal QQ:164166060 APP自动化简介 APP自动化,即通过自动化的方式,对APP施行一系列的仿按键输入.触摸屏输入.手势输入等操作,以达到对APP的功能进行自动化测试 ...
- APP自动化框架LazyAndroid使用手册(3)--核心API介绍
作者:黄书力 概述 在前一篇博文中,简要介绍了一款安卓UI自动化测试框架LazyAndroid (http://blog.csdn.net/kaka1121/article/details/53204 ...
- Web自动化框架LazyUI使用手册(3)--单个xpath抓取插件详解(selenium元素抓取,有此插件,便再无所求!)
概述 前面的一篇博文粗略介绍了基于lazyUI的第一个demo,本文将详细描述此工具的设计和使用. 元素获取插件:LazyUI Elements Extractor,作为Chrome插件,用于抓取页面 ...
- App 自动化框架设计思路
最近在整理和学习Appium+Java 自动化框架,对APP自动化框架的部分设想参考了一些文章,先进行整理下: 框架的思路一: 思考引入:https://www.cnblogs.com/yunfeio ...
- 《手把手教你》系列基础篇(九十六)-java+ selenium自动化测试-框架之设计篇-跨浏览器(详解教程)
1.简介 从这一篇开始介绍和分享Java+Selenium+POM的简单自动化测试框架设计.第一个设计点,就是支持跨浏览器测试. 宏哥自己认为的支持跨浏览器测试就是:同一个测试用例,支持用不同浏览器去 ...
- Spring框架系列(8) - Spring IOC实现原理详解之Bean实例化(生命周期,循环依赖等)
上文,我们看了IOC设计要点和设计结构:以及Spring如何实现将资源配置(以xml配置为例)通过加载,解析,生成BeanDefination并注册到IoC容器中的:容器中存放的是Bean的定义即Be ...
- iOS-申请测试证书详解(多图原创)
申请测试证书详解 前言 App开发和发布过程中证书基础知识:1. Certification(证书)证书是对电脑开发资格的认证,每个开发者帐号有一套,分为两种:1) Developer Certifi ...
- saltstack自动化运维系列⑤之saltstack的配置管理详解
saltstack自动化运维系列⑤之saltstack的配置管理详解 配置管理初始化: a.服务端配置vim /etc/salt/master file_roots: base: - /srv/sal ...
随机推荐
- 南阳OJ-14-会场安排问题---区间不相交
题目链接: http://acm.nyist.edu.cn/JudgeOnline/problem.php?pid=14 题目描述: 学校的小礼堂每天都会有许多活动,有时间这些活动的计划时间会发生冲突 ...
- 有没有想过css定位与xpath的区别
我是这样理解的, css选择如同你尽可能具体的描述一个元素的形态, 包括他的: 标签, 类, id 以及这些的组合, 目标是尽可能确定元素的唯一坐标 , 以方便选择. 而xpath是根据元素的路径去确 ...
- css 相关算法
计算 em 目标像素 除 基准像素 等于 em倍数结果: 14 / 16 = 0.875em 0.875倍也就是 14 像素 计算百分比 目标像素 除 父类总宽度 乘 一百:90 / 200 * 10 ...
- [LeetCode] The Maze II 迷宫之二
There is a ball in a maze with empty spaces and walls. The ball can go through empty spaces by rolli ...
- [HNOI2011]赛车游戏
题目描述 名歌手LAALA最近迷上了一款赛车游戏,游戏中开车的玩家在不同的路段需要选择不同的速度,使得自己在最短的时间内到达终点.开始游戏时,车内的初始油量为f,所以游戏的关键是如何在速度和耗油量之间 ...
- 「LibreOJ NOIP Round #1」旅游路线
Description T 城是一个旅游城市,具有 nnn 个景点和 mmm 条道路,所有景点编号为 1,2,...,n1,2,...,n1,2,...,n.每条道路连接这 nnn 个景区中的某两个景 ...
- hdu 5583 Kingdom of Black and White
Kingdom of Black and White Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/65536 K (Ja ...
- xx学院学员评优评奖管理系统
[勤拂拭软件,软件开发,毕业设计,程序作业,论文写作指导:q-[1215714557] 加好友请注明:勤拂拭)] 之前帮助一个军校学生做的一个评优评奖管理系统,该系统主要用于学校学生评优评先使用. ...
- Android绘制文字时垂直居中
canvas.drawText(String text, float x, float y, Paint paint); 是Android中绘制文本的方法,其中的x代表文字绘制时在X轴的起始点,而y是 ...
- python中读取文件数据时要注意文件路径
我们在用python进行数据处理时往往需要将文件中的数据取出来做一些处理,这时我们应该注意数据文件的路径.文件路径不对,回报如下错误: FileNotFoundError: File b'..Adve ...