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 ...
随机推荐
- 【spring源码】bean的实例化(转载)
首先来看一段代码,看过上一节的朋友肯定对这段代码并不陌生.这一段代码诠释了Spring加载bean的完整过程,包括读取配置文件,扫描包,加载类,实例化bean,注入bean属性依赖. 上一节介绍了Sp ...
- 18、OpenCV Python 简单实现一个图片生成(类似抖音生成字母人像)
__author__ = "WSX" import cv2 as cv import numpy as np def local_threshold(img): #局部阈值 gra ...
- VS2010 由于缺少调试目标"xx.exe"
有两种可能会造成这种现像.A.配制属性出了问题. 一种方法:右击“解决方案”->“属性”,在弹出的“属性页”框中,选择左边的“配置属性”,在右边,将应用程序的生成那个框框勾上,二可能是这里的属性 ...
- mysql sql知识总结
SQL知识总结: 检索不同的行: SELECT DISTINCT VEND_ID FROM PRODUCTS; DISTINCT 应用于所有的列 =================== 限制结果: S ...
- Qt 学习之路 2(51):布尔表达式树模型
Qt 学习之路 2(51):布尔表达式树模型 豆子 2013年5月15日 Qt 学习之路 2 17条评论 本章将会是自定义模型的最后一部分.原本打算结束这部分内容,不过实在不忍心放弃这个示例.来自于 ...
- LeetCode74.搜索二维矩阵
74.搜索二维矩阵 描述 编写一个高效的算法来判断 m x n 矩阵中,是否存在一个目标值.该矩阵具有如下特性: 每行中的整数从左到右按升序排列. 每行的第一个整数大于前一行的最后一个整数. 示例 示 ...
- Linux之旅
如今 linux 随着云服务的狂扫全球之势,对吾等准开发人员而言也不可继续视而不见了,硬着头皮调用情绪开始 Linux 之旅. 一.主机准备 既然 Linux,必然和日常工作的环境产生了“冲突”,经过 ...
- 那些熟悉又陌生的 css2、css3 样式,持续复习
initial关键字: 除了 Internet Explorer,其他的主流浏览器都支持 initial 关键字. Opera 15 之前的版本不支持 initial 关键字. initial ...
- C# Win7下隐藏手势提示
点击这里是原版答案 Stylus.IsFlicksEnabled="False" 手势是什么样子的
- QQ互联 网站应用接入
1.准备工作 接入qq登陆前,网站需要先进行申请,获得对应的appid和appkey, 以保证后续流程中可正确对网站与用户进行授权. 2.放置qq登陆按钮. 在网站页面上放置“qq登录”按钮,并为按钮 ...