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 简单示例
@Testpublic 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 简单示例
@Testpublic 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 简单示例
@Testpublic 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();}
Uiautomator 2.0之UiObject2类学习小记相关推荐
- java基础小记_[Java教程]Java基础学习小记
[Java教程]Java基础学习小记 0 2016-10-07 18:00:07 题外话:总结了多年的学习心得,不得不说,睡眠是一个学习者的必需品!所谓"早起毁一天"不是没有道理哪 ...
- 【Kotlin】学习小记-基础篇
Kotlin学习小记-基础篇 Kotlin的介绍 入门基础篇 属性声明 关于val和final的小Tips 参数 1.可变参数 2.命名参数 函数返回值 1.默认返回Unit值 2.返回Nothing ...
- LINUX下USB1.1设备学习小记(2)_协…
LINUX下USB1.1设备学习小记(2)_协议 (2009-03-27 14:40) 分类: 文章转载 USB协议: 先看USB接口 可以看出,在USB使用了4根线,分别为电源线,地线,信号线和差分 ...
- (2013.01.18-2013.07.15)179天的学习小记
(2013.01.18-2013.07.15)179天的学习小记 好久没有做个小小结咯,我的第一天学习小记是从2011.07.04开始,那时说好了在大学期间要每天记录,自我监督,就这样,这事也干了两年 ...
- 8086汇编学习小记-王爽汇编语言实验12
8086汇编学习小记-王爽汇编语言实验12 0号中断处理程序,开始安装在0000:0200处的程序最后用死循环导致显示不出'divided error',改成直接退出就正常显示了.注意修改ss,sp之 ...
- 多项式快速插值学习小记
今天终于抽空把这个综(du)合(liu)知识点学了,心力交瘁-- 多项式快速插值 给出 nnn 个点 (xi,yi)(x_i,y_i)(xi,yi) ,要求一个次数为 n−1n-1n−1 的多项式 ...
- 多项式的ln、exp、快速幂和开根学习小记
不妨又学习了一下多项式的求ln.exp.快速幂和开根操作. 这些操作比之前的求逆更上了一层台阶,应用同样很广. 多项式求逆等知识在我的博客里有讲:多项式的求逆.取模和多点求值学习小记 多项式ln 给出 ...
- 积性函数与Dirichlet卷积 学习小记
前言 首先感谢 XHM 大佬的悉心指导,我懂得了不少~. 链一下他关于这方面的见解.博客--XHM 的Dirichlet卷积 学习小记 一些定义 回归正题,这次我学习了一下狄利克雷卷积方面的知识. 先 ...
- lstm keras 权重 理解_Keras 作者:TF 2.0+Keras 深度学习研究你需要了解的 12 件事...
[新智元导读]Keras 作者 François Chollet 今天发表了一系列推文,如果你使用 TensorFlow 2.0 + Keras 做深度学习研究,这里有你需要知道的一切. Tensor ...
- Unity API常用方法和类学习笔记2
Unity API常用方法和类学习笔记2 ------Mathf & Input & Vector & Random 类Mathf 一.静态变量 print(Mathf.Deg ...
最新文章
- 2021年9月最新的保姆级计算机视觉学习路线
- 两篇文章说异常和中断之二
- 【原创】字符串工具类--找出单元字符串
- C#中将list进行序列化并使用SharpZipLib进行压缩
- Leet Code OJ 70. Climbing Stairs [Difficulty: Easy]
- 静态路由与动态路由概念及实例
- 汇编语言(四)之比较字符串
- 您的博文被删除了(1)
- ubuntu 下载工具 easyMule2.0
- 微信浏览器实现自动下载功能
- OpenGL with QtWidgets:材质、光照贴图
- 找回excel工作表保护密码
- borderColor与CGColor/UIColor
- Droid razr xt910 tegra2 地牢猎人2 dungeon hunter2
- 云计算数据中心网络的关键技术
- 编程初学者为什么要选择python语言,哪些人群适合使用python
- IO模型(阻塞,非阻塞,多路复用......)
- PHPCMS V9学习笔记(配置): 后台界面模板在线编辑
- 永冻土层matlab图片,河狸、永冻土层和气候变化
- Java正则的全量匹配和部分匹配