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类学习小记相关推荐

  1. java基础小记_[Java教程]Java基础学习小记

    [Java教程]Java基础学习小记 0 2016-10-07 18:00:07 题外话:总结了多年的学习心得,不得不说,睡眠是一个学习者的必需品!所谓"早起毁一天"不是没有道理哪 ...

  2. 【Kotlin】学习小记-基础篇

    Kotlin学习小记-基础篇 Kotlin的介绍 入门基础篇 属性声明 关于val和final的小Tips 参数 1.可变参数 2.命名参数 函数返回值 1.默认返回Unit值 2.返回Nothing ...

  3. LINUX下USB1.1设备学习小记(2)_协…

    LINUX下USB1.1设备学习小记(2)_协议 (2009-03-27 14:40) 分类: 文章转载 USB协议: 先看USB接口 可以看出,在USB使用了4根线,分别为电源线,地线,信号线和差分 ...

  4. (2013.01.18-2013.07.15)179天的学习小记

    (2013.01.18-2013.07.15)179天的学习小记 好久没有做个小小结咯,我的第一天学习小记是从2011.07.04开始,那时说好了在大学期间要每天记录,自我监督,就这样,这事也干了两年 ...

  5. 8086汇编学习小记-王爽汇编语言实验12

    8086汇编学习小记-王爽汇编语言实验12 0号中断处理程序,开始安装在0000:0200处的程序最后用死循环导致显示不出'divided error',改成直接退出就正常显示了.注意修改ss,sp之 ...

  6. 多项式快速插值学习小记

    今天终于抽空把这个综(du)合(liu)知识点学了,心力交瘁-- 多项式快速插值 给出 nnn 个点 (xi,yi)(x_i,y_i)(xi​,yi​) ,要求一个次数为 n−1n-1n−1 的多项式 ...

  7. 多项式的ln、exp、快速幂和开根学习小记

    不妨又学习了一下多项式的求ln.exp.快速幂和开根操作. 这些操作比之前的求逆更上了一层台阶,应用同样很广. 多项式求逆等知识在我的博客里有讲:多项式的求逆.取模和多点求值学习小记 多项式ln 给出 ...

  8. 积性函数与Dirichlet卷积 学习小记

    前言 首先感谢 XHM 大佬的悉心指导,我懂得了不少~. 链一下他关于这方面的见解.博客--XHM 的Dirichlet卷积 学习小记 一些定义 回归正题,这次我学习了一下狄利克雷卷积方面的知识. 先 ...

  9. lstm keras 权重 理解_Keras 作者:TF 2.0+Keras 深度学习研究你需要了解的 12 件事...

    [新智元导读]Keras 作者 François Chollet 今天发表了一系列推文,如果你使用 TensorFlow 2.0 + Keras 做深度学习研究,这里有你需要知道的一切. Tensor ...

  10. Unity API常用方法和类学习笔记2

    Unity API常用方法和类学习笔记2 ------Mathf & Input & Vector & Random 类Mathf 一.静态变量 print(Mathf.Deg ...

最新文章

  1. 2021年9月最新的保姆级计算机视觉学习路线
  2. 两篇文章说异常和中断之二
  3. 【原创】字符串工具类--找出单元字符串
  4. C#中将list进行序列化并使用SharpZipLib进行压缩
  5. Leet Code OJ 70. Climbing Stairs [Difficulty: Easy]
  6. 静态路由与动态路由概念及实例
  7. 汇编语言(四)之比较字符串
  8. 您的博文被删除了(1)
  9. ubuntu 下载工具 easyMule2.0
  10. 微信浏览器实现自动下载功能
  11. OpenGL with QtWidgets:材质、光照贴图
  12. 找回excel工作表保护密码
  13. borderColor与CGColor/UIColor
  14. Droid razr xt910 tegra2 地牢猎人2 dungeon hunter2
  15. 云计算数据中心网络的关键技术
  16. 编程初学者为什么要选择python语言,哪些人群适合使用python
  17. IO模型(阻塞,非阻塞,多路复用......)
  18. PHPCMS V9学习笔记(配置): 后台界面模板在线编辑
  19. 永冻土层matlab图片,河狸、永冻土层和气候变化
  20. Java正则的全量匹配和部分匹配

热门文章

  1. pe系统服务器怎么做双盘备份,韩博士教你如何使用pe备份系统
  2. python cnn模型_如何在Python中使用预训练的CNN模型
  3. 校外用Cterm登陆郁金香的方法
  4. 《东周列国志》第二十二回 公子友两定鲁君 齐皇子独对委蛇
  5. 一个手机号码如何注册多个百度账号
  6. NBGI 传说系列历史
  7. MATLAB语音信号处理系统GUI
  8. EditPlus中文版64bit百度网盘下载
  9. LiquidCrystal_I2C 显示不正常 只显示第一个首字符!
  10. [Python]用Python下载网络小说.23333