1、生成build.xml
android create uitest-project -n jar_name -t id -p projectPah
2、修改build.xml 改成默认执行
build.xml
<project name="AutoRunner" default="help">
修改为
<project name="AutoRunner" default="build">
3、push jar包到手机
adb push jarName data/local/tmp
4、执行测试
adb shell uiautomator runtest jarName -c classFullName[#test name]
快速调试命令:
adb shell uiautomator runtest <JARS> -c <CLASSES> [options]
<JARS> 指定运行的jar包名次,位于data/local/tmp下
-c <CLASSES> 测试一个类下的所有用例package_name.class_name;
测试特定的某个方法package_name.class_name#method_name
可以指定多个-c
如果不指定-c,则运行整个jar包下的所有用例
--nohup 指定该参数,可以断开PC进行运行测试用了
-e <name> <value> 传入键值对到测试程序中,可用于一些需要变化的参数的传入
代码中通过Bundle bundle = getParams();获取Bundle
类继承UIAutomatorTestCase
一、UiDevice代表设备状态,该类是单例模式
1、获取设备信息:屏幕分辨率、旋转状态、亮灭屏等
2、操作:按键、坐标、滑动、拖拽、灭屏唤醒、截图等
3、监听功能
1、手机按键
HOME
MENU
BACK
VOLUME_UP
VOLUME_DOWN
RecentAppsPOWER
Dpad
返回值 方法名 描述
boolean pressBack() 模拟短按返回back键
boolean pressDPadCenter() 模拟按轨迹球中点按键
boolean pressDPadDown() 模拟轨迹球向下按键
boolean pressDPadLeft() 模拟轨迹球向左按键
boolean pressDPadRight() 模拟轨迹球向右按键
boolean pressDPadUp() 模拟轨迹球向上按键
boolean pressDelete() 模拟短按删除delete按键
boolean pressEnter() 模拟短按回车键
boolean pressHome() 模拟短按HOME键
boolean pressKeyCode(int keyCode, int metaState) 模拟短按键盘代码keycode
boolean pressKeyCode(int keyCode) 模拟短按键盘代码keycode
boolean pressMenu() 模拟短按menu键
boolean pressRecentApps() 模拟短按最近使用程序
boolean pressSearch() 模拟短按搜索键
KEYCODE 键盘映射码
1)KeyEvent 按键事件
2)META Key
辅助功能键: ALT、SHIFT、CAPS_LOCK
列 激活状态 metaState
base META_key未被激活 0
caps SHIFT或CAPS_LOCK被激活时 1
fn ALT被激活 2
caps_fn ALT,SHIFT或CAPS_LOCK同时被激活时 3
UiSelect 代表搜索一种搜索条件,可以在当前界面查询和获取特定元素,如果获取到多个元素则返回布局层次结构上第一个匹配的元素
四种匹配关系:完全匹配(text)、包含匹配(contains)、正则匹配(matches)、开始匹配(startsWith)
节点关系:父(parent)、子(children)、兄弟(sibling)、先辈(ancestor)、后代(descendant)
UiSelector text(String text) 文本
UiSelector textContains(String text) 文本包含
UiSelector textMatches(String regex) 文本正则
UiSelector textStartsWith(String text) 文本起始匹配
UiSelector description(String text) 描述
UiSelector descriptionContains(String text) 描述包含
UiSelector descriptionMatches(String regex) 描述正则
UiSelector descriptionStartsWith(String text) 描述起始匹配
UiSelector className(String className) 类名
UiSelector classNameMatches(String regex) 正则类名
1)class.getName方式
2)完整类名方式:android.widget.LinearLayout
3)正则方式
4)常量方式 自己建立一个常用的常量类
UiSelector packageName(String name) 包名
UiSelector packageNameMatches(String regex) 包名正则
索引 index 在同级中兄弟节点的编号,按先后顺序
实例 instance 在同一个布局文件,同一类型的编号,按先后顺序
UiSelector index(int index) 索引
UiSelector instance(int instance) 实例
UiSelector checked(boolean val) 选择属性
UiSelector clickable(boolean val) 可点击属性
UiSelector enabled(boolean val) enabled属性
UiSelector focusable(boolean val) 焦点属性
UiSelector focused(boolean val) 当前焦点属性
UiSelector longClickable(boolean val) 长按属性
UiSelector scrollable(boolean val) 滚动属性
UiSelector selected(boolean val) 背景选择属性
UiSelector childSelector(UiSelector selector) 子类,递归查找,找到第一个就停止
UiSelector fromParent(UiSelector selector) 从父类,递归查找,找到第一个就停止
UiSelector resourceId(String id) 资源ID
UiSelector resourceIdMatches(String regex) 资源ID正则
二、UiObject 代表一个组件对象,对象有许多模拟实际操作手机的方法和属性;
点击与长按对象
拖拽与滑动对象
输入文本与清除文本
获取对象的属性与属性的判断
手势的操作
判断对象是否存在
boolean click() 点击对象
boolean clickAndWaitForNewWindow(long timeout) 点击对象,等待新窗口出现,参数为等待超时时长
boolean clickAndWaitForNewWindow() 点击对象,等待新窗口出现
boolean clickBottomRight() 点击对象的右下角
boolean clickTopLeft() 点击对象的左上角
boolean longClick() 长按对象,对对象执行长按操作
boolean longClickBottomRight() 长按对象的右下角
boolean longClickTopLeft() 长按对象的左上角
boolean dragTo(UiObject destObj, 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) 拖动对象往上滑动
boolean setText(String text) 在对象中输入文本
void clearTextField() 清除编辑框中的文本
输入文本与清除文本实现步骤说明
1)输入文本:清除文本—输入文本
2)清除文本:长按—清除
Rect getBounds() 获得对象矩形坐标,矩形左上角坐标与右下角坐标
int getChildCount() 获得下一级子类数量
String getClassName() 获得对象类名属性的类名文本
String getContentDescription() 获得对象的描述属性的描述文本
String getPackageName() 获得对象包名属性的包名文本
String getText() 获得对象的文本属性中的文本
Rect getVisibleBounds() 返回可见视图的范围,如果视图的部分是可见的,只有可见部分报告的范围
UiObject getChild(UiSelector selector) 获得对象的子类对象,可以递归获取子孙当中某个对象
UiObject getFromParent(UiSelector selector) 从父类获取子类,按照UiSeletor获取兄弟类(递归)
boolean isCheckable() 检查对象的checkable属性是否为true
boolean isChecked() 检查对象的checked属性是否为true
boolean isClickable() 检查对象的clickable属性是否为true
boolean isEnabled() 检查对象的enabled属性是否为true
boolean isFocusable() 检查对象的focusable属性是否为true
boolean isFocused() 检查对象的focused属性是否为true
boolean isLongClickable() 检查对象的longclickable属性是否为true
boolean isScrollable() 检查对象的scrollable属性是否为true
boolean isSelected() 检查对象的selected属性是否为true
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) 手势操作,亮点向外张开
boolean waitForExists(long timeout) 等待对象出现
boolean waitUntilGone(long timeout) 等待对象消失
boolean exists() 检查对象是否存在
1 、UiCollection类说明
1) UiCollection是UiObject的子类
2) UiCollection代表元素条目集合
2 、UiCollection功能说明
1)先按照一定的条件枚举出容器类界面所有符合条件的子元素
2)在从符合条件的元素再次通过一定的条件最终定位需要的组件
3 、UiCollection使用场景
1)一般使用容器类组件作为父类
2)一般使用在需要找子类且子类由于某些因素不好定位
3)获取某一类的数量,如获取联系人列表下当前视图下联系人的数量
public UiObject getChildByDescription (UiSelector childPattern, String text)
public UiObject getChildByText (UiSelector childPattern, String text)
public UiObject getChildByInstance (UiSelector childPattern, int instance)
在UiSelector选择器的查找条件中从子ui元素中搜索,递归寻找所有符合条件的子集。
再次用描述/文本/实例条件从前面搜索子集定位到想要的元素
参数:
childPattern UiSelector从子元素中的选择条件
Text、instance 从搜索出的元素中再次用描述/文本/实例条件搜索元素
返回值:UiObject
抛出异常:UiObjectNotFoundException
- [uiautomator篇][1] 官网译文
http://www.jianshu.com/p/7718860ec657 2016.07.25 20:59 字数 3675 Android UIAutomator浅谈 --------------- ...
- UIAutomator简介
简介 Android 4.3发布的时候包含了一种新的测试工具–uiautomator,uiautomator是用来做UI测试的.也就是普通的手工测试,点击每个控件元素 看看输出的结果是否符合预期.比如 ...
- 【Android测试】【第十一节】Uiautomator——简介
◆版权声明:本文出自胖喵~的博客,转载必须注明出处. 转载请注明出处:http://www.cnblogs.com/by-dream/p/4872244.html 前言 在App的测试中,除了单元测试 ...
- Uiautomator简介及其环境搭建、测试执行
UiAutomator框架使用指南 UiAutomator是Google开发的自动化测试工具,通过UI创建自动化测试代码,来测试界面(UI)的有效功能,可以针对应用程序运行在一个或更多的设备上.我们并 ...
- UIAutomator定位简介
UIAutomator元素定位是 Android 系统原生支持的定位方式,虽然与 xpath 类似,但比它更加好用,且支持元素全部属性定位.定位原理是通过android 自带的android uiau ...
- [转载]Macaca 测试 Android 应用:UIAutomator
在用macaca进行自动化测试,想试一下移动端测试,看到这篇文章,尝试一下. 前言 用 Macaca 可以快速.便捷地进行安卓 native 的自动化测试,用简洁的 js 语法,写下用例,然后执行 M ...
- 使用uiautomatorviewer和uiautomator来做android的UI测试
来自:http://university.utest.com 作者:Angelos Nakulas (All Authored Courses) 译者:Elaine00 目录 简介 什 ...
- UIAutomator源码分析之启动和运行
通过上一篇<Android4.3引入的UiAutomation新框架官方简介>我们可以看到UiAutomator其实就是使用了UiAutomation这个新框架,通过调用Accessibi ...
- Appium Android Bootstrap源码分析之简介
在上一个系列中我们分析了UiAutomator的核心源码,对UiAutomator是怎么运行的原理有了根本的了解.今天我们会开始另外一个在安卓平台上基于UiAutomator的新起之秀--Appium ...
随机推荐
- HDP 中 yarn 和 MR2 的配置
以下说明均以集群中 slave 结点的配置为 48G内存,12块硬盘,12核(core) CPU 为例. 在 Yarn 中,一个 Container 是一个基础的包含内存和CPU 的单元.为了较好的平 ...
- 【bzoj2437】[Noi2011]兔兔与蛋蛋 二分图最大匹配+博弈论
Description Input 输入的第一行包含两个正整数 n.m. 接下来 n行描述初始棋盘.其中第i 行包含 m个字符,每个字符都是大写英文字母"X".大写英文字母&quo ...
- 【bzoj4872】[Shoi2017]分手是祝愿 期望dp
Description Zeit und Raum trennen dich und mich. 时空将你我分开.B 君在玩一个游戏,这个游戏由 n 个灯和 n 个开关组成,给定这 n 个灯的初始状态 ...
- 190225Redis
一.Redis的简单使用 Redis操作模式 # Author:Li Dongfei import redis r = redis.Redis(host='192.168.56.7', port=63 ...
- 《条目十六》如何将vector和string的数据传给遗留的API
<条目十六>如何将vector和string的数据传给遗留的API 优秀的代码是可以延续的,所以并非所有的代码都是重构的,而且有时候重构会对整个系统影响较大,投入巨大,得不偿失.然而,也不 ...
- RUCM简介
一.动机 UCM:用例建模,主要用于结构化和文档需求方面. UCSs:用例规格说明书,通常是文本文档,所以描述中不可避免含有歧义. RUCM:限制性用例建模.目标 G1.使UCMs更加可理解并且更精确 ...
- Qt 学习之路 2(74):线程和 QObject
Home / Qt 学习之路 2 / Qt 学习之路 2(74):线程和 QObject Qt 学习之路 2(74):线程和 QObject 豆子 2013年12月3日 Qt 学习之路 2 2 ...
- SQL语句之行操作
SQL语句系列 1.SQL语句之行操作 2.SQL语句之表操作 3.SQL语句之数据库操作 4.SQL语句之用户管理 关系型数据库的存储形式 在关系型数据库中,数据都是以类似于Excel表格的形式存储 ...
- Android 利用apache tomcat在自己的电脑上搭建服务器
1.什么叫服务器 装了服务器端的软件的那台电脑被称为服务器.常见的服务器的软件有apache tomcat. 2.Tomcat 介绍 tomcat是一种轻量级的web容器服务器,使用tomcat可以实 ...
- JAVASCRIPT 使用 && 和 || 完成 简写
123=='1234' && 'active' 为真时,返回 'active '...可以当成 三元运算符的简写形式哦. let val = val || 'active' ...