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 ...
随机推荐
- (转)使用vs调试的时候,如何知道程序阻塞在哪里?
遇到一个问题,加了两个断点当运行到断点A后,我释放掉了,理想状态应该是在断点B停住,但并没有,程序感觉就像是阻塞了一样请问,这种状况如何知道程序当前是在哪里阻塞着? 回复: 可以让调试器停住,然后在调 ...
- js创建ActiveXObject无效
是因为使用的浏览器不是ie内核的,比如用搜狗浏览器,切换为兼容模式就正常了
- luoguP1401 城市
https://www.luogu.org/problemnew/show/P1401 二分答案网络流判断是否可行即可 #include <bits/stdc++.h> using nam ...
- [CQOI2007]涂色 BZOJ 1260 区间dp
题目描述 假设你有一条长度为5的木版,初始时没有涂过任何颜色.你希望把它的5个单位长度分别涂上红.绿.蓝.绿.红色,用一个长度为5的字符串表示这个目标:RGBGR. 每次你可以把一段连续的木版涂成一个 ...
- Qt 学习之路 2(76):QML 和 QtQuick 2
Home / Qt 学习之路 2 / Qt 学习之路 2(76):QML 和 QtQuick 2 Qt 学习之路 2(76):QML 和 QtQuick 2 豆子 2013年12月18日 Qt ...
- struts2学习笔记(三)—— struts2的常见配置
一.配置文件的加载顺序 每次从客户端发送请求到服务器都要先经过Struts2的核心过滤器StrutsPrepareAndExecuteFilter,这个过滤器有两个功能:预处理和执行.在预处理中主要就 ...
- C++_类和动态内存分配1—动态内存和类
静态类成员 num_strings成员声明为静态存储类.静态类成员有一个特点:无论创建了多少对象,程序都只创建一个静态类变量副本.也就是说,类的所有对象共享一个静态成员.num_strings成员可以 ...
- LeetCode268.缺失数字
268.缺失数字 描述 给定一个包含 0, 1, 2, ..., n 中 n 个数的序列,找出 0 .. n 中没有出现在序列中的那个数. 示例 示例 1: 输入: [3,0,1] 输出: 2 示例 ...
- 数独求解问题(DFS+位运算优化)
In the game of Sudoku, you are given a large 9 × 9 grid divided into smaller 3 × 3 subgrids. For exa ...
- win7和centos7双系统--转
转自http://blog.chinaunix.net/uid-30867756-id-5758575.html 参考:http://blog.csdn.net/hsg77/article/detai ...