版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
UiAutomator自动化测试1UI自动化测试框架介绍测试框架介绍优缺点Monkeyrunner语言:python运行环境:python环境,pc连接设备后adb运行脚本文件测试对象:UI测试优点:操作简单,可以录制测试脚本缺点:主要使用坐标,移植性不强,业务逻辑判断较差Instrumentation语言:java运行环境:adb命令启动或者手机中直接启动测试对象:白盒测试、UI测试1、针对单个apk测试2、需要源码,需要对apk重新签名3、需要root权限Robotium语言:java,基于Instrumentation的封装运行环境:同Instrumentation测试对象:同Instrumentation同InstrumentationUiAutomator语言:java运行环境:pc连接设备后adb运行脚本文件或直接通过eclipse运行测试对象:UI测试优点:1、简单易学,可模拟大部分手工操作2、无Activity限制,无需签名,无需root权限3、基于应用UI元素控制,灵活精确缺点:1、无法配合OpenGL和HTML5应用使用,因为这些应用没有AndroidUI组件2UiAutomator简介UiAutomator是google在安卓4.1版本推出的一套基于UI控件的自动化测试框架,可模拟人对手机的操作,主要用于UI自动化测试。由下面两套工具组成:Uiautomatorviewer:扫描、分析待测应用的UI组件的图像工具(路径:sdk安装文件夹\tools\uiautomatorviewer.bat)。Uiautomator:包含功能界面测试API和自动化运行测试用例的引擎的JAVA类库。3UiAutomator框架UiDevice代表设备状态,可以通过UiDevice来检测设备的各种属性如当前屏幕尺寸,同时也可以进行设备级别相关操作:按钮、拖拽、转换屏幕转向UiSelector代表UI控件搜索的条件,基于对元素描述的各种属性,可以获得该元素控件从而进行相关操作UiObject代表一个UI控件,通过UiSelector来查找UiObjectUiCollection代表控件的集合,通过UiSelector选取符合条件的元素集合,通常用于遍历UiScrollable代表可滚动控件,模拟水平或者垂直滚动的UI元素,当元素在屏幕外需要滚动屏幕才能看到的情况下需要使用UiScrollable4UiAutomator环境搭建开发工具:eclipse
开发环境:JDK1.6以上编译环境:AndroidSDK、Ant(基于Java的构建工具,用于编译uiatutomator测试工程,自动完成所有的构建过程)5.1UiAutomator对象之UiDevice通常用于获取系统的设备信息、系统按键、全局操作等1、获取坐标参数UiDevice.getInstance().getDisplayHeight()/getDisplayWidth()获取屏幕高度/宽度2、获取信息信息,包括屏幕分辨率、亮灭屏状态等UiDevice.getInstance().getCurrentActivityName()获取当前界面Activity3、滑动、拖拽操作UiDevice.getInstance().drag(startX,startY,endX,endY,steps)
拖拽坐标处对象到另一个坐标4、输入按键UiDevice.getInstance().pressKeyCode(KeyEvent.KEYCODE_A)5、系统按键UiDevice.getInstance().wakeUp()/sleep()按电源键亮屏/灭屏
5.2UiAutomator对象之UiSelector(1)通常使用UiSelector,通过各种属性节点和关系来定位组件。通过uiautomatorviewer,我们可以找到很多对象的属性,可以通过这些属性来定位需要的元素对象5.3UiAutomator对象之UiSelector(2)1、通过text、description属性定位UiSelector().text(text)//通过text完全定位UiSelector().description(description)//通过description完全定位2、通过resourceId定位UiSelector().resourceId(id)//通过resourceId定位3、通过class、package定位这种方式适用于当前页面上只有一种类型的组件的情况,例如只有一个ListViewUiSelector().className(className)/packageName(name)4、通过index、instance定位UiSelector().index(index)/instance(instance)5、使用childSelector()函数来嵌套UiSelector对象UiObjectappItem=newUiObject(newUiSelector().className("android.widget.ListView").instance(1).childSelector(newUiSelector().text("Apps")));//在当前界面中查找第一个ListView中的带有文本属性为Apps的子控件。5.4UiAutomator对象之UIObjectUIObject是UiAutomator的核心属性之一。它代表了整个UI界面中的所有对象元素。功能包括:获取UI元素,点击、拖拽、滑动、对象属性判断、手势等。1、通过UiSelector对象获取对象元素UiObjectobject1=newUiObject(newUiSelector().text("联系人"))2、点击移动操作click()/longClick()点击对象/长按对象dragTo(destObj,steps)以steps拖动对象到destObj(目标位置)3、文本输入与清除setText(text)/clearTextField()设置内容为text/清除文本4、获取对象状态exists()/waitForExists(timeout)对象是否存在/等待对象出现5、手势pinchIn(percent,steps)/pinchOut(percent,steps)双指向内收缩/双指向外张开5.5UiAutomator对象之UiCollection通常用于获取满足某种搜索条件的组件集合,通过链式搜索确定最终需要的组件。UiCollection是Uiobject的子类。搜索时先按照一定的条件枚举容器类界面所有符合条件的子元素。再从符合条件的元素中通过一定的条件进一步定位到需要的元素。一般使用容器类组件作为父类,用于寻找不好定位的子元素。PublicUiobjectgetchildByDescription(UiSelectorchildPattern,Stringtext)PublicUiobjectgetchildByText(UiSelectorchildPattern,Stringtext)PublicUiobjectgetchildByInstance(UiSelectorchildPattern,intinstance)UiCollectioncollection=newUiCollection(newUiSelector().className("android.widget.ListView"))UiSelectorchildPattern=newUiSelector().className("android.widget.TextView")UiObjectmusic=collection.getChildByText(childPattern,"Music";)5.6UiAutomator对象之UiScrollable可以用UiScrollable来模拟水平或者垂直滚动的UI元素。如果需要操作的元素在屏幕外需要滚动屏幕才能看到的情况下需要使用UiScrollable。例如,下面的代码显示了如何模拟滚动到“Settings”菜单并点击“Abouttablet”菜单的操作:UiScrollablesettingsItem=newUiScrollable(newUiSelector().className("android.widget.ListView"));UiObjectabout=settingsItem.getChildByText(newUiSelector().className("android.widget.LinearLayout"),"Abouttablet");about.click()5.7UiAutomator对象之UiWatcherUiWatcher用户处理脚本执行过程中遇到非预想的步骤,比如测试过程中手机系统自动弹出一个提示框等。1、中断监听检查条件PublicbooleancheckForCondition();在测试框架无法找到一个匹配时,使用uiselector测试框架将自动调用此程序。在超时未找到匹配项时,调用checkForCondition()方法查找设备上的所有已注册监听器条件,以此来处理中断问题保证测试用例正常运行。2、监听器VoidregisterWatcher(Stringname,UiWatcherwatcher)
注册一个监听器,通过checkForCondition检查,当UiSelector无法匹配到对象时,触发监听器6UiAutomator运行1、编写测试用例UiAutomator中的测试类都要继承UiAutomatorTestCase,每个测试用例的方法的方法名都要以test开头2、创建build文件androidcreateuitest-project-n<prjname>-t<android-sdk-ID>-p<workspacepath>-n
为工程名-p
为工程路径-t
为所使用的SDK的id(命令行运行Androidlist,查看需要编译的apilevel对应的id即可)3、修改build文件打开工程目录,找到build.xml文件,将第2行的help修改为build4、开始编译,使用ant,通过build.xml打包生成jarant-buildfile<build.xml文件路径>5、pushjar包到手机adbpush<project.jar>/data/local/tmp/6、运行测试adbshelluiatumatorruntest<project.jar>-c<包名>.<类名>[#testname]7UiAutomator快速运行上一章节,UiAutomator运行步骤较繁琐,可使用脚本将重复的2~6步骤封装起来。使用已有的脚本工具uiautomatorhelper,自动执行从创建build文件到运行脚本的一系列动作,之后在Eclipese上可直接运行调试脚本。Publicstaticvoidmain(String[]args){StringjarName=“Vinsoncontrol”;StringtestClass=“com.androidcontrol.Test_recovery_reconnect”;StringtestName=“test_recovery_reconnect”;StringandroidId=“1”;newUiAutomatorHelper(jarName,testClass,testName,androidId);}8脚本稳定性建议1、少用Sleep等待
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 双联户联户长先进主要事迹(6篇)
- 网络安全漏洞挖掘算法-洞察分析
- 网络安全应急响应机制研究洞察报告-洞察分析
- 《RFID基本原理》课件
- 心理健康与老年痴呆预防-洞察分析
- 土壤养分精准管理效果评估-洞察分析
- 虚拟卡在虚拟现实(VR)和增强现实(AR)技术中的研究-洞察分析
- 医院防火应急预案范文(7篇)
- 人教版教学课件基因和染色体的关系:减数分裂和受精作用
- 农业科技创新的跨学科合作模式
- 固态电池生产(1GWH)项目可行性研究报告模板-立项拿地
- 中建一期工程履带吊安拆方案
- 广东省深圳市坪山区2024学年七年级上学期期末数学试题【含答案】
- 2024游乐新“室”界室内乐园洞察与趋势研究报告
- 2023年益阳市安化县招聘乡镇卫生院护理人员考试真题
- 2025年九年级中考数学专题复习-二次函数综合压轴题(与最值有关的问题)(含简单答案)
- 中国多发性骨髓瘤诊治指南(2024年修订)解读
- 广西南宁市2023-2024学年高二上学期期末考试+历史 含解析
- 2024年医院医保工作总结(6篇)
- 南京信息工程大学《数学分析1》2021-2022学年第一学期期末试卷
- 校园餐整治存在的问题及建议
评论
0/150
提交评论