android UiAutomator一个完整的班级功能测试用例

本文展示了如何使用UiAutomator编写一个完整的Android班级管理功能自动化测试用例,包括启动应用、登录、班级管理、创建班级、添加学生、修改备注等操作,并对每个步骤进行了详细说明。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

本人在学习UiAutomator时候看了一些教程,写了一些用例的脚本,昨天终于写了一个相对完整的班级单元的用例,基本把所有功能点都覆盖到了,个人感觉算是一个完整的用例了,分享出来,如果不足,烦请指正。

public void ClassTest() throws UiObjectNotFoundException {//班级管理基本功能测试
startApp();//启动app
checkLog();//检查登录
classManage();//进入班级管理
renameClass();//重命名班级
createClass();//创建班级
searchStudenThrowTel();//通过手机号添加学生
addStudentIntoClass();//通过通讯录添加学生
remarkStudentInfo();//备注学生信息
checkClassNum();//检查班级人数
alterClassInfo();//更改班级备注信息
deleteClass();//删除班级
}

这里面每个都是我自己写的方法,最后之所以没有退出,因为启动app的时候里面加了一个清理后台的方法,所以每次打开运行的时候都是重新打开app。

下面我把每个方法内容也贴出来。

public void startApp() throws UiObjectNotFoundException {//启动app
UiDevice.getInstance().pressHome();
UiDevice.getInstance().pressHome();
clean();//清理后台程序
getUiObjectByText("点知教育").clickAndWaitForNewWindow();//打开app
outputNotable("app启动了!");
}

其中clean();方法之前博客写过了,就不具体贴出来了。

public void checkLog() throws UiObjectNotFoundException{//检查登录立即登录
setShort();
boolean log = true;
while(log){
UiObject me = new UiObject(new UiSelector().text("我"));
if (me.exists()) {//检查是否登录
outputNotable("已经登录了!");
log = false;
}else{
UiObject login = new UiObject(new UiSelector().resourceId("com.dianzhi.teacher.school:id/et_user"));
if (login.exists()) {//检查是否进入登录界面
login();//执行登录方法
Date start = new Date();
UiObject me1 = new UiObject(new UiSelector().text("我"));
while(!me1.exists()){//等待进入首页
sleep(100);
Date now = new Date();
long x = now.getTime() - start.getTime();
if (x>10000) {//超时提醒失败
outputNotable("登录失败!");
break;
}
}
}
}
}
setLong();
}

public void classManage() throws UiObjectNotFoundException {//进入班级管理
setShort();
getUiObjectByText("首页").clickAndWaitForNewWindow();
getUiObjectByText("班级管理").clickAndWaitForNewWindow();
setLong();
}

public void renameClass() throws UiObjectNotFoundException {//随机修改班级名称
setShort();
getUiObjextByResourceId("com.dianzhi.teacher.school:id/open_or_close_iv").click();//点击展开设置栏
getUiObjectByText("重命名").clickAndWaitForNewWindow();
int num = new Random().nextInt(90)+10;//生成一个随机数
String classname = "Test"+num;//生成一个随机的班级名
writeText(classname);//重命名班级
getUiObjectByText("确定").clickAndWaitForNewWindow();
String newclassname = getUiObjextByResourceId("com.dianzhi.teacher.school:id/name").getText();//获取当前班级名
assertEquals("修改班级名称失败!", classname, newclassname);//检查是否重命名成功
outputNotable("修改班级名称成功!");
getUiObjextByResourceId("com.dianzhi.teacher.school:id/open_or_close_iv").click();//收回设置栏
setLong();
}

public void createClass() throws UiObjectNotFoundException {//添加班级
setShort();
getUiObjectByText("添加班级").clickAndWaitForNewWindow();
writeText("测试");
getUiObjectByText("确定").clickAndWaitForNewWindow();
String newclassname = getUiObjectByText("该班级还没有学生,请添加学生").getFromParent(new UiSelector().resourceId("com.dianzhi.teacher.school:id/name")).getText();
assertEquals("创建班级失败!", "测试", newclassname);
outputNotable("创建班级成功!");
setLong();
}

这里只写了没有空班级的情况,也可以利用最新创建的班级拍在最后这个特点,点击最后一个班级来实现,这个方法后面后提到。

public void searchStudenThrowTel() throws UiObjectNotFoundException {//通过手机号搜索学生
setShort();
getUiObjectByText("测试").clickAndWaitForNewWindow();
getUiObjectByText("添加学生").clickAndWaitForNewWindow();
writeText("13120454219");
UiDevice.getInstance().pressEnter();
String tel = getUiObjextByResourceId("com.dianzhi.teacher.school:id/tel").getText();//获取当年显示账号的手机号
assertEquals("查找学生失败!", "13120454219", tel);//检查是否是是想要的账号
outputNotable("查找学生成功!");
getUiObjectByText("拉进班级").clickAndWaitForNewWindow();
setLong();
}

public void addStudentIntoClass() throws UiObjectNotFoundException {//从通讯录添加学生
getUiObjectByText("添加学生").clickAndWaitForNewWindow();
getUiObjectByText("通讯录添加").clickAndWaitForNewWindow();
getUiObjectByTextResourceId("男", "com.dianzhi.teacher.school:id/sex").getFromParent(new UiSelector().className("android.widget.LinearLayout").index(3)).click();
UiObject success = new UiObject(new UiSelector().text("添加成功"));
if (success.exists()) {
outputNotable("添加学生成功!");
}else{
outputNotable("添加学生失败!");
}
UiDevice.getInstance().pressBack();
}

这里我是把第一个性别为男的账号添加到班级,因为是固定的,所以在后面检验的时候比较方便。

public void remarkStudentInfo() throws UiObjectNotFoundException {//随机输入学生备注信息
getUiObjectByText("13120454218").clickAndWaitForNewWindow();
getUiObjectByText("请输入备注信息..").clickAndWaitForNewWindow();
writeText("我是测试");
getUiObjectByText("保存").clickAndWaitForNewWindow();
String remark = getUiObjextByResourceId("com.dianzhi.teacher.school:id/remark").getText();
assertEquals("修改备注信息失败!", "我是测试", remark);
outputNotable("修改备注信息成功!");
UiDevice.getInstance().pressBack();
UiDevice.getInstance().pressBack();
}

这里手机号也顺便也检查了一下刚才那个学生是否成功加入了班级。

public void checkClassNum() throws UiObjectNotFoundException {//检查班级人数
String studentnum = getUiObjectByText("测试").getFromParent(new UiSelector().resourceId("com.dianzhi.teacher.school:id/student_count_tv")).getText();
assertEquals("添加学生失败!", "共2名学生", studentnum);
outputNotable("添加学生成功!");
}

public void alterClassInfo() throws UiObjectNotFoundException {//修改班级信息
setShort();
getUiObjextByResourceId("com.dianzhi.teacher.school:id/open_or_close_iv").clickAndWaitForNewWindow();
getUiObjectByText("设置").clickAndWaitForNewWindow();
getUiObjextByResourceId("com.dianzhi.teacher.school:id/set_class_room_info_tv").clickAndWaitForNewWindow();
int num = new Random().nextInt(100);
String info = "info" + num;
writeText(info);
getUiObjectByText("完成").clickAndWaitForNewWindow();
getUiObjectByText("保存").clickAndWaitForNewWindow();
getUiObjectByText("设置").clickAndWaitForNewWindow();
String classInfo = getUiObjextByResourceId("com.dianzhi.teacher.school:id/set_class_room_info_tv").getText();
assertEquals("修改班级简介失败!", info, classInfo);
outputNotable("修改班级简介成功!");
UiDevice.getInstance().pressBack();
getUiObjextByResourceId("com.dianzhi.teacher.school:id/open_or_close_iv").clickAndWaitForNewWindow();
setLong();
}

public void deleteClass() throws UiObjectNotFoundException {//删除班级
setShort();
int num = getUiObjextByResourceId("com.dianzhi.teacher.school:id/lv").getChildCount();
getUiObjextByResourceId("com.dianzhi.teacher.school:id/lv").getChild(new UiSelector().index(num-1)).getChild(new UiSelector().resourceId("com.dianzhi.teacher.school:id/open_or_close_iv")).clickAndWaitForNewWindow();
getUiObjectByText("删除").clickAndWaitForNewWindow();
getUiObjectByText("确定").clickAndWaitForNewWindow();
int newnum = getUiObjextByResourceId("com.dianzhi.teacher.school:id/lv").getChildCount();
if(num-newnum == 1){
outputNotable("删除班级成功!");
}else{
outputNotable("删除班级失败!");
}
setLong();
}

这个只考虑了班级只有一页的情况,如果存在多页还需要写一个获取当前班级数的方法。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值