1. 基础动作

1.1. 相关API介绍

API 说明
clear() 清楚编辑框内的内容
click() 点击一个对象
clickAndWait(EventCondition<R> condition, long timeout) 点击一个对象然后等待在超时的时间内条件满足则通过,否则抛出异常
drag(Point dest, int speed) 自定义速度拖拽这个对象到指定位置
drag(Point dest) 拖拽这个对象到指定位置
longClick() 长按某个对象
scroll(Direction direction, float percent) 对该对象执行一个滚动操作
scroll(Direction direction, float percent, int speed) 自定义速度,对该对象执行一个滚动操作
setText(String text) 设置文本内容
legacySetText(String text) 通过发送keycode,设置文本内容

1.2 简单示例

  @Test
public void testCase05() throws InterruptedException {
/**
* 发现UiObject2中的setText()方法还是无法直接输入中文,需要借助外部方法库.
*/
UiObject2 editText = mDevice.findObject(By.clazz(EditText.class));
editText.setText(Utf7ImeHelper.e("测试")); UiObject2 appIcon = mDevice.findObject(By.text("联系人"));
Point desPoint = new Point();
desPoint.x = 654;
desPoint.y = 1066;
appIcon.drag(desPoint, 2000); UiObject2 appBtn = mDevice.findObject(By.text("联系人"));
appBtn.longClick(); UiObject2 listView = mDevice.findObject(By.res("android:id/list"));
listView.scroll(Direction.DOWN, 0.8f, 3000); UiObject2 smsBtn = mDevice.findObject(By.text("短信"));
smsBtn.clickAndWait(Until.newWindow(), 2000);
}

2. 手势动作模拟

2.1 相关API

API 说明
pinchClose(float percent, int speed) 自定义速度执行收缩手势
pinchClose(float percent) 执行收缩手势
pinchOpen(float percent, int speed) 自定义速度执行展开手势
pinchOpen(float percent) 执行展开手势
fling(Direction direction) 执行一个扫动手势,Direction代表为起点方向
fling(Direction direction, int speed) 自定义速度,执行一个扫动手势
swipe(Direction direction, float percent, int speed) 执行一个滑动操作,可自定义滑动距离和速度
swipe(Direction direction, float percent) 执行一个滑动操作
setGestureMargin(int margin) 以像素为单位,设置手势边缘
setGestureMargins(int left, int top, int right, int bottom) 以像素为单位,设置手势边缘

2.2 简单示例

 @Test
public void testCase06() throws InterruptedException {
UiObject2 pic = mDevice.findObject(By.res("com.miui.gallery:id/single_view_other"));
pic.pinchOpen(0.8f, 2000);
Thread.sleep(1000);
pic.pinchClose(0.8f, 2000); UiObject2 contactList = mDevice.findObject(By.res("android:id/list"));
contactList.fling(Direction.DOWN);
Thread.sleep(1000);
contactList.fling(Direction.UP,3000); UiObject2 listView = mDevice.findObject(By.res("android:id/list"));
listView.swipe(Direction.UP,0.5f, 3000);
Thread.sleep(1500);
listView.setGestureMargin(100);
listView.swipe(Direction.DOWN,0.5f, 3000);
}

3. 获取层级与条件判断

3.1相关API

API 说明
findObject(BySelector selector) 搜索在这个对象之下的所有元素,并返回第一个与搜索条件匹配的
findObjects(BySelector selector) 搜索在这个对象之下的所有元素,并返回所有与搜索条件匹配的
getChildCount() 返回这个对象直属子元素的数量
getChildren() 返回这个对象下的直接子元素的集合
getParent() 返回该对象的父类
equals(Object object) 比较两个对象是否相等
hashCode() 获取对象的哈希码
hasObject(BySelector selector) 返回该对象是否存在
recycle() 回收该对象
wait(UiObject2Condition<R> condition, long timeout) 等待条件被满足
wait(SearchCondition<R> condition, long timeout) 等待条件被满足

3.2 简单示例

 @Test
public void testCase07(){
UiObject2 list = mDevice.findObject(By.res("android:id/list"));
UiObject2 child = list.findObject(By.clazz(TextView.class));
Log.i("testCase07", child.getText()); List<UiObject2> lisCollect = mDevice.findObjects(By.clazz(TextView.class));
int count = lisCollect.size();
Log.i("testCase07", String.valueOf(count));
for (UiObject2 obj:lisCollect) {
Log.i("testCase07", obj.getText());
} List<UiObject2> childList = list.getChildren();
int childCount = childList.size();
Log.i("testCase07", String.valueOf(childCount));
for (UiObject2 obj:childList) {
Log.i("testCase07", obj.getText());
} UiObject2 childElement = mDevice.findObject(By.text("联系人"));
childElement.getParent().click();
}

原创:http://blog.csdn.net/swordgirl2011/article/details/50993157

Uiautomator 2.0之UiObject2类学习小记的更多相关文章

  1. Uiautomator 2.0之BySelector类学习小记

    1. BySelector与By静态类 1.1 BySelector类为指定搜索条件进行匹配UI元素, 通过UiDevice.findObject(BySelector)方式进行使用. 1.2 By类 ...

  2. Uiautomator 2.0之Until类学习小记

    1. 状态条件-Uiobject2Condtion 1.1 一个UiObject2Condition代表UiObject2满足某个条件的特定状态,主要用于获取到组件释放处于某种状态. 1.2 简单示例 ...

  3. Uiautomator 2.0之UiWatcher类学习小记

    1. 主要功能 使用此方法可以处理中断问题,从而保证测试用例的正常运行. 2. 相关API API 说明 registerWatcher (String name, UiWatcher watcher ...

  4. Uiautomator 2.0之Configrator类学习小记

    1. Configration类介绍 1.1. Configrator用于设置脚本动作的默认延时 1.2  Configrator功能: 1.2.1 可调节两个模拟动作之间的默认间隔 1.2.2 可调 ...

  5. CSS学习小记

    搜狗主页页面CSS学习小记 1.边框的处理   要形成上图所示的布局效果,即,点选后,导航下面的边框不显示而其他的边框形成平滑的形状.相对于把导航的下面边框取消然后用空白覆盖掉下面搜索栏的边框比较而言 ...

  6. mongodb入门学习小记

    Mongodb 简单入门(个人学习小记) 1.安装并注册成服务:(示例) E:\DevTools\mongodb3.2.6\bin>mongod.exe --bind_ip 127.0.0.1 ...

  7. 【转】Date类学习总结(Calendar Date 字符串 相互转换 格式化)

    原文网址:http://www.blogjava.net/jerry-zhaoj/archive/2008/10/08/233228.html Date类学习总结 1.计算某一月份的最大天数 Cale ...

  8. Gcd&Exgcd算法学习小记

    Preface 对于许多数论问题,都需要涉及到Gcd,求解Gcd,常常使用欧几里得算法,以前也只是背下来,没有真正了解并证明过. 对于许多求解问题,可以列出贝祖方程:ax+by=Gcd(a,b),用E ...

  9. Uiautomator - 6.0 以上权限受限问题

    问题:在android studio中使用UiAutomator 2.0 编写测试用例时,要实现截图(非命令方式),写入文件时出现权限被拒绝的提示.例如: java.io.FileNotFoundEx ...

随机推荐

  1. OGNL的使用

    访问Action中的普通属性: <s:property value="loginname"/><br/> 访问Action中的对象属性: <s:pro ...

  2. 华为荣耀6 H60-L02/L12(联通版)救砖包【适用于无限重启】

    本帖最后由 HOT米粒 于 2014-11-16 20:43 编辑 华为荣耀6 H60-L02/L12(联通版)救砖包[适用于无限重启]说明: 1.本工具包用于华为荣耀6 H60-L02(联通版): ...

  3. [R语言]R语言计算unix timestamp的坑

    R+mongo的组合真是各种坑等着踩 由于mongo中的时间戳普遍使用的是unix timestamp的格式,因此需要对每天的数据进行计算的时候,很容易就想到对timestamp + gap对方式来实 ...

  4. js禁用右键菜单、选中、复制、剪切、粘贴

    //屏蔽右键菜单 document.oncontextmenu = function (event) { if (window.event) { event = window.event; } try ...

  5. dev winform导出功能

    SaveFileDialog fileDialog = new SaveFileDialog(); fileDialog.Title = "导出Excel"; fileDialog ...

  6. LINUX 编译安装 PHP 环境

    今天终于有时间 总结一下 linux 的编译安装 php 环境同学给我发了他写的文档 ,基本就可以实现编译安装了我同学文章地址: http://penghui.link/articles/2016/0 ...

  7. 安卓手机USB网络共享,电脑卡顿、反应慢

    1.首先需要把手机连接到电脑,在手机上打开USB网络共享. 2.打开设备管理器 3.在网络适配器中,找到Remote NDIS based Internet Sharing Device,右键更新驱动 ...

  8. json相关的一些用法

    一. json可以表示3种类型的值:   简单值 . 对象. 数组    表示对象时:>1. 没有变量的概念 ,所以不用申明变量                    >2. 没有末尾结束 ...

  9. 【hihoCoder】1082: 然而沼跃鱼早就看穿了一切

      题目:http://hihocoder.com/problemset/problem/1082 输入一个字符串,将其中特定的单词替换成另一个单词   代码注意点: 1. getline(istre ...

  10. tableView:cellForRowAtIndexPath:方法中indexPath.row不是从0开始的,从4开始

    问题描述:重新刷新数据源,刷新列表时,发现前面4个cell没有显示出来,直接从第5条开始的,这是什么东东? 在tableView:numberOfRowsInSection:方法里打印数据源个数,是正 ...