




已阅读5页,还剩14页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
UiAutomator自动化测试 1 1UI自动化测试框架介绍 2 2UiAutomator简介 UiAutomator是google在安卓4 1版本推出的一套基于UI控件的自动化测试框架 可模拟人对手机的操作 主要用于UI自动化测试 由下面两套工具组成 Uiautomatorviewer 扫描 分析待测应用的UI组件的图像工具 路径 sdk安装文件夹 tools uiautomatorviewer bat Uiautomator 包含功能界面测试API和自动化运行测试用例的引擎的JAVA类库 3 3UiAutomator框架 4 4UiAutomator环境搭建 开发工具 eclipse开发环境 JDK1 6以上编译环境 AndroidSDK Ant 基于Java的构建工具 用于编译uiatutomator测试工程 自动完成所有的构建过程 5 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 按电源键亮屏 灭屏 6 5 2UiAutomator对象之UiSelector 1 通常使用UiSelector 通过各种属性节点和关系来定位组件 通过uiautomatorviewer 我们可以找到很多对象的属性 可以通过这些属性来定位需要的元素对象 7 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的子控件 8 5 4UiAutomator对象之UIObject UIObject是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 双指向内收缩 双指向外张开 9 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 10 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 11 5 7UiAutomator对象之UiWatcher UiWatcher用户处理脚本执行过程中遇到非预想的步骤 比如测试过程中手机系统自动弹出一个提示框等 1 中断监听检查条件PublicbooleancheckForCondition 在测试框架无法找到一个匹配时 使用uiselector测试框架将自动调用此程序 在超时未找到匹配项时 调用checkForCondition 方法查找设备上的所有已注册监听器条件 以此来处理中断问题保证测试用例正常运行 2 监听器VoidregisterWatcher Stringname UiWatcherwatcher 注册一个监听器 通过checkForCondition检查 当UiSelector无法匹配到对象时 触发监听器 12 6UiAutomator运行 1 编写测试用例UiAutomator中的测试类都要继承UiAutomatorTestCase 每个测试用例的方法的方法名都要以test开头2 创建build文件androidcreateuitest project n t p n为工程名 p为工程路径 t为所使用的SDK的id 命令行运行Androidlist 查看需要编译的apilevel对应的id即可 3 修改build文件打开工程目录 找到build xml文件 将第2行的help修改为build4 开始编译 使用ant 通过build xml打包生成jarant buildfile5 pushjar包到手机adbpush data local tmp 6 运行测试adbshelluiatumatorruntest c testname 13 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 14 8脚本稳定性建议 1 少用Sleep等待Sleep方法休眠时间固定 对不同性能机器存在延迟或时间浪费的情况 多使用waitForExists waitUtilGone waitForIde waitForWindowUpdate等2 少用绝对坐标绝对坐标在不同机型适配时兼容性较差尽可能使用控件bound信息 或者使用设备高宽按比例分配3 多用Assert断言使用Assert加入自己预设逻辑 可以灵活控制Case执行 及时断言 15 9测试用例设计 1 流程图测试哪些项 怎么验证 出现错误时该如何处理 首先确定测试项和脚本流程图2 函数提取出公共方法以函数封装 比如点击操作是Uiautomator中用的最多的 而根据控件id和text来作为索引
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025年无人机考试题库和部份考题带答案(典型题)
- 小儿视网膜母细胞瘤E期护理查房
- 安丘市2024-2025学年八年级下学期语文期中模拟试卷
- 2016年7月国开电大法律事务专科《行政法与行政诉讼法》期末纸质考试试题及答案
- 七夕主题活动总结2025年
- 广东省2025年下半年电机装配工:基础理论试题
- 社区网格化管理课件
- 江苏省无锡金桥双语实验学校2024-2025学年九年级下学期期中考试英语试卷(含答案)
- Unit 2 School life单元测试卷(含解析)译林版(2024)八年级英语上册
- 岩石基坑开槽合同范本
- 如何开展课题研究
- 炼钢厂电工应知应会考试题库500题(含各题型)
- bc-6800产品中心医院
- GB/T 5069-2007镁铝系耐火材料化学分析方法
- GB/T 40565.2-2021液压传动连接快换接头第2部分:20 MPa~31.5 MPa平面型
- GB/T 11446.10-1997电子级水中细菌总数的滤膜培养测试方法
- 旅游区奖惩制度管理办法
- 儿童生长发育监测课件
- 实验室病原微生物危害 评估报告
- 科技项目申报专员系列培训(技术攻关项目)
- 幼儿舞蹈《蜗牛》舞蹈教案
评论
0/150
提交评论