Uiautomator 2.0之UiObject2类学习小记
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类学习小记的更多相关文章
- Uiautomator 2.0之BySelector类学习小记
1. BySelector与By静态类 1.1 BySelector类为指定搜索条件进行匹配UI元素, 通过UiDevice.findObject(BySelector)方式进行使用. 1.2 By类 ...
- Uiautomator 2.0之Until类学习小记
1. 状态条件-Uiobject2Condtion 1.1 一个UiObject2Condition代表UiObject2满足某个条件的特定状态,主要用于获取到组件释放处于某种状态. 1.2 简单示例 ...
- Uiautomator 2.0之UiWatcher类学习小记
1. 主要功能 使用此方法可以处理中断问题,从而保证测试用例的正常运行. 2. 相关API API 说明 registerWatcher (String name, UiWatcher watcher ...
- Uiautomator 2.0之Configrator类学习小记
1. Configration类介绍 1.1. Configrator用于设置脚本动作的默认延时 1.2 Configrator功能: 1.2.1 可调节两个模拟动作之间的默认间隔 1.2.2 可调 ...
- CSS学习小记
搜狗主页页面CSS学习小记 1.边框的处理 要形成上图所示的布局效果,即,点选后,导航下面的边框不显示而其他的边框形成平滑的形状.相对于把导航的下面边框取消然后用空白覆盖掉下面搜索栏的边框比较而言 ...
- mongodb入门学习小记
Mongodb 简单入门(个人学习小记) 1.安装并注册成服务:(示例) E:\DevTools\mongodb3.2.6\bin>mongod.exe --bind_ip 127.0.0.1 ...
- 【转】Date类学习总结(Calendar Date 字符串 相互转换 格式化)
原文网址:http://www.blogjava.net/jerry-zhaoj/archive/2008/10/08/233228.html Date类学习总结 1.计算某一月份的最大天数 Cale ...
- Gcd&Exgcd算法学习小记
Preface 对于许多数论问题,都需要涉及到Gcd,求解Gcd,常常使用欧几里得算法,以前也只是背下来,没有真正了解并证明过. 对于许多求解问题,可以列出贝祖方程:ax+by=Gcd(a,b),用E ...
- Uiautomator - 6.0 以上权限受限问题
问题:在android studio中使用UiAutomator 2.0 编写测试用例时,要实现截图(非命令方式),写入文件时出现权限被拒绝的提示.例如: java.io.FileNotFoundEx ...
随机推荐
- LeetCode 412. Fizz Buzz
Problem: Write a program that outputs the string representation of numbers from 1 to n. But for mult ...
- HDU4787 GRE Words Revenge(AC自动机 分块 合并)
题目 Source http://acm.hdu.edu.cn/showproblem.php?pid=4787 Description Now Coach Pang is preparing for ...
- BZOJ1527 : [POI2005]Pun-point
求出重心,然后把所有点关于重心极角排序,极角相同的按到重心距离从大到小排序. 按极角序依次扫描,得到相邻两个向量的夹角以及长度之比,看成字符串. 若两个字符串循环同构,则两个点集相似,KMP判断即可. ...
- tornado 学习笔记17 HTTPServerRequest分析
代表Http请求. 所有的属性都是字符串型. 17.1 属性 (1) method:请求方法类型,比如"GET"."POST" (2) ur ...
- 【ORACLE】IN 后跟&参数字符串的处理方法
今天写尼日利亚BOSS,数据修复脚本时遇到一个问题, 参数字符串无法再IN中使用,例如:想要完成下面的查询 select * From customeren c where c.customercod ...
- ASCII和16进制对照表
十六进制代码 MCS 字符或缩写 DEC 多国字符名 ASCII 控制字符 1 00 NUL 空字符 01 SOH 标题起始 (Ctrl/A) 02 STX 文本起始 (Ctrl/B) 03 ETX ...
- linux 查找 并删除 文件
find / -name "*.mp3" |xargs rm -rf会删除所有以mp3为扩展的文件.操作的时候先: find / -name "*.mp3" 会 ...
- c#/js代码命名规范及代码规范
常用命名 列表,lUser 数组,arrUser 字符串,strTitle 用,分割的字符串,strStatuss(多个用逗号分割的状态) C# Entity层 统一以E开始,比如EUser,EOrd ...
- perl学习之路2
这些主要是从 "小骆驼" 书上粘贴或者摘抄出来的, 个人认为需要记的语法知识 "在某些情况下, 你可能需要在一台机器上写程序, 再传送到另一台机器上运行.这时候, 请使用 ...
- Allegro之无法保存(提示和用户有关或者和lock有关)
使用中无意出现此情况 无奈重新打开文件时发现brd文件下面有个.brd.lck文件,顺手删掉,回复正常~ 此为bug解bug,具体方法下次遇到再仔细研究是为什么~ 养成隔几分钟手动保存的好习惯,防止b ...