收藏 分销(赏)

UIAutomator基础知识简介.pptx

上传人:天**** 文档编号:14603465 上传时间:2026-10-18 格式:PPTX 页数:42 大小:4.49MB 下载积分:10 金币
下载 相关
UIAutomator基础知识简介.pptx_第1页
第1页 / 共42页
UIAutomator基础知识简介.pptx_第2页
第2页 / 共42页


点击查看更多>>
资源描述
单击此处编辑母版标题样式,单击此处编辑母版文本样式,第二级,第三级,第四级,第五级,2020/1/12,#,UIAutomator,基础知识分享,本次分享主要内容,UIAutomator,简介,UIAutomator,、,Robotium,、,MonkeyRunner,配置环境、新建工程、编译及运行测试,UIDevice,、,UiObject,、,UiCollection,、,UiScrollable,、,UiSelector,UIAutomator,简介,用户界面,测试(,UI,),UIAutomator,简介,UIAutomator,The uiautomator testing framework lets you test your user interface(UI)efficiently by creating automated functional UI testcases that can be run against your app on one or more devices,。(谷歌官网概述),UIAutomator,、,Robotium,、,MonkeyRunner,三者有何区别,为何选择,UIAutomator,?,1.,UIAutomator,优点,:可以对所有操作进行自动化,操作,简单,可以跨应用,跨平台,缺点,:,Android,版本需要高于,4.0,UIAutomator,、,Robotium,、,MonkeyRunner,三者有何区别,为何选择,UIAutomator,?,2.Robotium,优点:针对某个,apk,的独立测试,缺点:无法跨应用,具有一定局限性,UIAutomator,、,Robotium,、,MonkeyRunner,三者有何区别,为何选择,UIAutomator,?,3.,MonkeyRunner,优点,:通过,API,定义的特定命令和事件控制设备或模拟器,可同时控制多个相同的设备,缺点:基于坐标控制,无法控制不同分辨率设备,配置环境,1.,配置,JAVA,环境,2.,配置,Android,环境,3.,配置,Ant,环境,配置环境,1.,配置,JAVA,环境,1,),安装jdk 随意选择目录 只需把默认安装目录 java 之前的目录修改即可,2,),安装jre更改 java 之前目录和安装 jdk 目录相同即可,注:若无安装目录要求,可全默认设置。无需做任何修改,两次均直接点下一步。,配置环境,1.,配置,JAVA,环境,3,),安装完JDK后配置环境变量 计算机属性高级系统设置高级环境,变量,配置环境,1.,配置,JAVA,环境,4,),系统变量新建,JAVA_HOME,变量,变量值填写,jdk,的安装目录(本人是,C:Program FilesJavajdk1.7.0_25),配置环境,1.,配置,JAVA,环境,5,),系统变量寻找,Path,变量编辑,在变量值最后输入,%JAVA_HOME%bin;%JAVA_HOME%jrebin;,(注意原来,Path,的变量值末尾有没有,;,号,如果没有,先,输入,;,号,再输入上面的代码,),6,),系统变量新建,CLASSPATH,变量,变量值填写,.;%JAVA_HOME%lib;%JAVA_HOME%libtools.jar,(注意最前面有一点),系统变量配置,完毕,7,),检验是否配置成功 运行,cmd,输入,java-version,(,java,和,-version,之间有空格),若,如图所示 显示版本信息 则说明安装和配置成功,。,注:部分内容摘自:,配置环境,2.,配置,Android,环境,1,),系统变量新建,ANDROID_HOME,变量,变量值,填写,sdk,的,安装目录(本人,是,E:androidsdk),2,),系统变量寻找,Path,变量编辑,在变量值最后,输入,%ANDROID_HOME,%tools;%ANDROID_HOME%platform-tools,;,3,),检验是否配置成功 运行,cmd,输入,android list,,,若如图所,示,表示配置成功。,配置环境,2.,配置,Ant,环境,1,),系统变量新建,ANT_HOME,变量,变量值,填写,A,nt,的,安装目录(本人,是,E:apache-ant-1.9.4),2,),系统变量寻找,Path,变量编辑,在变量值最后,输入,%ANT_HOME%bin;,3,),检验是否配置成功 运行,cmd,输入,ant,,,若如图所,示,表示配置成功。,配置环境,注:以上环境配置的前提,均基于以下,3,个包。,新建工程,打开,eclipse,新建一个,Java,工程,包,增加,build path,新建测试类,继承成,UiAutomatorTestCase,新建测试用例,方法名必须,test,开头,新建工程,1.,打开,eclipse-,创建,JAVA,项目,新建工程,2,.,创建,libs,文件夹,配置支持库(增加,build path,),新建工程,3,.,新建测试类,&,测试用例,新建工程,3,.,编写一个简单的测试用例(实现返回,home,界面的简单操作),package com.lyh;,import com.android.uiautomator.core.UiDevice;,import com.android.uiautomator.testrunner.UiAutomatorTestCase;,public class Test extends UiAutomatorTestCase,public,void testDemo(),UiDevice.,getInstance,().pressHome();/,此行代码即实现返回,home,界面,编译及运行,创建,build.xml,修改,build.xml,运行测试,开始编译,Push,文件,android create uitest-project n -t 1(sdk,在电脑中的,id,编号,通过,android list,命令可查询,)p,例子:,android create uitest-project n,testDemo-t 3,p E:eclipseDemo2,进入工作空间,打开,build,文件,把第二行的,help,修改为,build,a,nt-build,adb,push /data/local/tmp/,adb,push E:,eclipseDemo2bintestDemo.jar,/data/local/tmp,/,adb shell uiautomator runtest -c.#testname,例子:,adb shell uiautomator runtest,testDemo-c com.lyh.Test#testDemo,是否觉得刚刚的步骤过于繁琐,难以掌握?,编译及运行,UIDevice,UiDevice,代表设备状态,提供关于设备的状态信息。你也可以使用这个类来模拟装置上的用户的行为,如按方向键或按菜单按钮等。,UiDevice,为单例模式(,UiDevice.,getInstance(),,,getUiDevice(),),能获取手机的相关信息,UIDevice,的功能,按键与,KEYCODE,使用,获取坐标与坐标点击,拖,拽与滑动,旋转屏幕,灭,屏与唤醒屏幕,截,图与等待空闲,获取包名,&,开启通知栏,&,快速设置,&,获取布局文件,UIDevice,的功能,按键(,home,、,back,、,enter,、,recentApp,等),获取,坐标与坐标点击,灭,屏与唤醒,屏幕,按键相关的,API,返回值,方法名,描述,boolean,pressHome(),点击,Home,键,boolean,pressBack(),点击,Back,键,boolean,pressRecentApp(),点击最近任务键,boolean,pressMenu(),点击,menu,键,按键相关的,API,比如:想要点击,Home,键,就可以新建如下方法:,public void,testPressHome(),UiDevice.,getInstance().pressHome();,又如:想要点击,Menu,键,就可以新建如下方法:,public void,testPressMenu,(),UiDevice.,getInstance().pressMenu();,public static void,main(String args),String,jarName=TestDemo;,String testClass=com.lyh.Test;,String testName,=“,testPressHome,”;/,只需修改红色部分这个对应的方法名即可,String androidId=3;,new UiAutomatorHelper(jarName,testClass,testName,androidId);,坐标相关的,API,返回值,方法名,描述,boolean,Click(int x,int y),点击屏幕对应坐标位置,int,getDisplayHeight(),获取屏幕高度,point,getDisplaySizeDp(),获取屏幕尺寸返回显示大小,int,getDisplayWidth(),获取屏幕宽度,比如:想要点击屏幕中某一坐标位置,就可以新建如下方法:,public void,testClick(),UiDevice.,getInstance().click(300,200);/,点击屏幕坐标为,300,200,的位置,坐标相关的介绍,灭屏与唤醒屏幕相关,API,返回值,方法名,描述,void,wakeUp(),使屏幕点亮,需要在屏幕灭掉的情况下才有作用,void,Sleep(),使屏幕灭掉,需要在屏幕点亮的情况下才有作用,boolean,isScreenOn(),检查是否亮屏,灭屏与唤醒屏幕相关,API,比如:想要灭屏操作,就可以新建如下方法:,public void,testSleepAndWakeUp(),throws,RemoteException,if,(UiDevice.,getInstance().isScreenOn(),UiDevice.,getInstance().sleep();,if,(!UiDevice.,getInstance().isScreenOn(),UiDevice.,getInstance().wakeUp();,UiObject,UiObject,代表设备对象,UiObject,代表手机中各种组件的对象,通过,UiSelector,搜索,条件,找到组件对象后,我们要对组件对象进行如点击、长按、拖动、手势等常见的动作模拟操作,,UiObject,可以轻松完成这些模拟操作,UiObject,的功能,点击与长按对象,拖,拽与滑动对象,输入文本与清除文本,获取对象的属性与属性的判断,手势的操作,判断对象是否存在,UiObject,的功能,点击与长按对象,2.,拖拽与滑动对象,3.,手势,点击与长按对象的,API,返回值,方法名,描述,boolean,click(),点击对象,boolean,Longclick(),长按对象,boolean,clickAndWaitForNewWindow(),点击对象等待新窗口,boolean,clickTopLeft(),点击对象左上角,点击与长按对象,具体实现方法如下:,public void,testUiObject(),throws,UiObjectNotFoundException,UiObject weather=,new,UiObject(,new,UiSelector().resourceId(com.meizu.flyme.weather:id/flyme_weather_layout);/,通过,resource_id,获得天气对象,weather.click();/,点击天气小插件,sleep(3000);,UiDevice.,getInstance().pressBack();,weather.clickAndWaitForNewWindow,();/,点击等待新窗口出现,sleep(3000);,UiDevice.,getInstance().pressBack();,weather.longClick,();/,长按天气小插件,sleep(3000);,UiDevice.,getInstance,().pressBack();,weather.clickTopLeft,();/,点击天气小插件左上角,sleep(3000);,UiDevice.,getInstance().pressBack();,拖拽与滑动对象的,API,返回值,方法名,描述,boolean,dragTo(UiObjectdestObj,int steps),拖拽对象到另一个对象位置上,步长可设置拖动的速度,boolean,dragTo(int destX,int destY,int steps),拖拽对象到屏幕某个坐标位置上,步长可设置拖动速度,boolean,swipeDown(int steps),拖动对象往下滑动,boolean,swipeLeft(int steps),拖动对象往左滑动,boolean,swipeRight(int steps),拖动对象往右滑动,boolean,swipeUp(int steps),拖动对象往上滑动,点击与长按对象的,API,具体实现方法如下:,public void,testDrag(),throws,UiObjectNotFoundException,RemoteException,UiObject,Browser=,new,UiObject(,new,UiSelector().text(Browser);/,通过文本获得浏览器应用的对象,Browser.dragTo(300,1000,50);/,把浏览器拖到坐标为,300,1000,的位置,UiObject Video=new UiObject(,new,UiSelector().text(Video);/,通过文本获得视频应用的对象,Video.dragTo(Browser,10);/,把视频应用拖向浏览器应用,UiDevice.,getInstance().pressRecentApps();,sleep(3000);,UiObject Recent=,new,UiObject(,new,UiSelector().resourceId(com.android.systemui:id/workspace_screen);,for(int i=1;i15;i+),Recent.swipeUp(10);,point1,Point 2,point3,point4,多指手势示意,两指手势,point1,point2,两指合拢,两指扩张,手势类型,手势的操作相关,API,返回值,方法名,描述,boolean,performMultiPointerGesture(PointerCoords.,touches),执行单手指触控手势,可定义任意手势,与形状,boolean,performTwoPointerGesture(Point startPoint1,Point startPoint2,Point endPoint1,Point endPoint2,int steps),执行任意两个手指触控手势,模拟两个手指手势,boolean,pinchIn(int percent,int steps),手势操作,两点向内收缩,boolean,pinchOut(int percent,int steps),手势操作,亮点向外张开,UiScrollable,、,UiCollection,、,UiSelector,UiScrollable,获得滚动对象的方法。,UiCollection,集成,UiObject,,可获得集合中子元素对象。,UiSelector,结合,UiObject,使用,,UiSelector,的功能就是通过各属性值来定位组件,进行自动化的前提是定位对象,然后才能操作对象,所以,UiSelector,的作用非常重要。,Q&A,
展开阅读全文

开通  VIP、SVIP  下载更划算
下载10份以上建议开通 VIP 会员
下载20份以上建议开通SVIP会员


开通VIP      成为共赢上传

当前位置:首页 > 包罗万象 > 大杂烩

移动网页_全站_页脚广告1

关于我们      便捷服务       自信AI       AI导航        关注我们

©2010-2026 宁波自信网络信息技术有限公司  版权所有

客服电话:0574-28810668  投诉电话:18658249818

gongan.png浙公网安备33021202000488号   

icp.png浙ICP备2021020529号-1  |  浙B2-20240490  

关注我们 :微信公众号    抖音    微博    LOFTER 

客服