点击控件的具体位置

d(text="Settings").click(offset=(0.5, 0.5))   点击控件的中间位置

d(text="Settings").click(offset=(0, 0))  点击控件的左上方

d(text="Settings").click(offset=(1, 1)) 点击控件的右下方

拖动控件

d(text="Settings").swipe("right") d(text="Settings").swipe("left", steps=10) d(text="Settings").swipe("up", steps=20) d(text="Settings").swipe("down", steps=20)
# 1 steps is about 5ms, so 20 steps is about 0.1s

特定UI对象上的两点手势从边缘到中心向外,从中心到边缘

# 从边缘到中心
d(text="Settings").pinch_in(percent=100, steps=10) # 从中心到边缘 d(text="Settings").pinch_out()等待特定的界面出现或者消失
# 等待UI出现
d(text="Settings").wait(timeout=3.0) # return bool # 等待UI消失 d(text="Settings").wait_gone(timeout=1.0)对特定的UI对象执行Fling(可滚动)默认时间20s
# 向前(默认)
d(scrollable=True).fling()
# 掷球前水平 d(scrollable=True).fling.horiz.forward() # 垂直向后投掷 d(scrollable=True).fling.vert.backward() # 水平开始 d(scrollable=True).fling.horiz.toBeginning(max_swipes=1000) # 垂直抛向末端 d(scrollable=True).fling.toEnd()

对特定的UI对象执行滚动

水平或垂直

向前或向后,或开始或结束,

# 垂直向前滚动(默认)
d(scrollable=True).scroll(steps=10) # 水平向前滚动 d(scrollable=True).scroll.horiz.forward(steps=100) # 垂直向后滚动 d(scrollable=True).scroll.vert.backward() # 水平 d(scrollable=True).scroll.horiz.toBeginning(steps=100, max_swipes=1000) # 垂直滚动到结尾 d(scrollable=True).scroll.toEnd() # 垂直向前滚动,直到出现特定的UI对象d(scrollable=True).scroll.to(text="Security")当选择器找不到匹配项时,uiautomator2将运行所有注册的观察程序,条件匹配时单击目标
d.watcher("AUTO_FC_WHEN_ANR").when(text="ANR").when(text="Wait") \ .click(text="Force Close")#使用不带参数的click
d.watcher("ALERT").when(text="OK").click()#same as
d.watcher("ALERT").when(text="OK").click(text="OK")#当条件为真时按键
d.watcher("AUTO_FC_WHEN_ANR").when(text="ANR").when(text="Wait") \ .press("back", "home")#检查指定的观察程序是否触发一个观察者被触发,这意味着观察者已经运行并且其所有条件都匹配。
# true in case of the specified watcher triggered, else false
d.watcher("watcher_name").triggered
#展示所有watch
d.watchers#通常可以用来自动点击权限确认框,或者自动安装
d.watcher("OK").when(text="OK").click(text="OK") # enable auto trigger watchers d.watchers.watched = True # disable auto trigger watchers d.watchers.watched = False # get current trigger watchers status assert d.watchers.watched == False#移除watch
# remove all registered watchers
d.watchers.remove()
# remove the named watcher, same as d.watcher("watcher_name").remove()
d.watchers.remove("watcher_name")

全局设置#用户每次点击后延迟1.5s
d.click_post_delay = 1.5#设置默认元素超时时间(s)
d.wait_timeout = 30.0
#输入法
d.set_fastinput_ime(True) # 切换成FastInputIME输入法
d.send_keys("你好123abcEFG") # adb广播输入 d.clear_text() # 清除输入框所有内容(Require android-uiautomator.apk version >= 1.0.7) d.set_fastinput_ime(False) # 切换成正常的输入法 d.send_action("search") # 模拟输入法的搜索
 
uiautomation2哈哈哈哈
 

 
 
 
 

转载于:https://www.cnblogs.com/zhujunsheng/p/10452073.html

uiautomator2进阶相关推荐

  1. 十分钟弄懂最快的APP自动化工具uiautomator2

    相信很多使用appium做过APP自动化的人都深有感触: appium运行慢.时间长 uiautomatorviewer定位元素时得关掉appium server 在低版本的appium上获取toas ...

  2. 干货|一文搞定 uiautomator2 自动化测试工具使用

    一.背景简介 Google 官方提供了一个 Android 自动化测试工具(Java 库),基于 Accessibility 服务,功能很强,可以对第三方 App 进行测试,获取屏幕上任意一个 App ...

  3. APP测试面试题汇总基础+进阶

    目录 一.基础篇 1.请介绍一下,APP测试流程? 2.APP测试需要提前准备哪些测试资源? 3.APP测试和Web测试的区别? 1.系统结构方面 2.性能方面 3.兼容性方面 4.相对于 Wed 项 ...

  4. | 一文 uiautomator2 自动化测试工具使用

    在上一篇文章中分享了 pytest 的基本用法,本文进一步介绍 pytest 的其他实用特性和进阶技巧. pytest fixtures pytest 中可以使用 @pytest.fixture 装饰 ...

  5. APP测试面试题汇总(基础篇、进阶篇)

    一.基础篇 1.请介绍一下,APP测试流程? APP测试流程与web测试流程类似,分为如下七个阶段: 1.根据需求说明书编写测试计划: 2.制定测试方案,主要是测试任务.测试人员和测试时间的分配: 3 ...

  6. 正式压力测试:locust进阶,超简单搭建生产级locust集群

    locust进阶,搭建生产级locust集群 本教程基于k8s集群搭建,使用helm作为包管理工具 通过helm安装locust

  7. 伍六七带你学算法 进阶篇-生命游戏

    有趣的算法题–生命游戏 难度-中等 根据 百度百科 ,生命游戏,简称为生命,是英国数学家约翰·何顿·康威在 1970 年发明的细胞自动机. 想要体验生命游戏的小伙伴可以到这里-->生命游戏 进入 ...

  8. NLP进阶之(七)膨胀卷积神经网络

    NLP进阶之(七)膨胀卷积神经网络 1. Dilated Convolutions 膨胀卷积神经网络 1.2 动态理解 1.2.2 转置卷积动画 1.2.3 理解 2. Dilated Convolu ...

  9. js进阶 13-5 jquery队列动画如何实现

    js进阶 13-5 jquery队列动画如何实现 一.总结 一句话总结:同一个jquery对象,直接写多个animate()就好. 1.什么是队列动画? 比如说先左再下,而不是左下一起走 2.怎么实现 ...

最新文章

  1. C语言数据类型大学霸IT达人
  2. 水平拉滑轮组计算机械效率的题,机械效率杠杆论文,关于中考物理机械效率计算题*相关参考文献资料-免费论文范文...
  3. 51nod 1267 4个数和为0 思路:哈希map+避免重复的点
  4. vue滚动加载插件vue-infinite-scroll
  5. 解决阿里云OSS跨域问题
  6. webservice无法理解soap头action_数学是对理解的追求,而不仅仅是追求计算
  7. Delphi更高效率的编程方式的思考【一】
  8. join left semi_Hive的left join、left outer join和left semi join三者的区别
  9. 2022-2028全球石油管材接头行业调研及趋势分析报告
  10. 南邮计算机学院复试,过来人建议:南京邮电大学考研复试注意事项
  11. 戴尔微型计算机7050配置,小巧彪悍 戴尔 OptiPlex 7050 微型机评测
  12. 神兽来了服务器维护,2016年3月31日服务器维护公告
  13. Vue动态计算百分比配合vux插件
  14. NFT艺术品交易平台
  15. GEE:基于GEE的单个湖泊的实时水体提取(以武汉东湖为例)
  16. mysql group_concat去重_mysql GROUP_CONCAT 函数 将相同的键的多个单元格合并到一个单元格...
  17. Dubbo源码解析-——服务导出
  18. 微信dat文件批量解密
  19. Simulation?Emulation?模拟?仿真?
  20. vi ~/.bashrc如何保存退出

热门文章

  1. MFC的固高环形倒立摆GRIP2002实验平台
  2. mysql深度解析_百万级数据下的mysql深度解析
  3. nodejs 游戏框架_nodejs游戏服务器框架
  4. python 多个列表合并_Python对两个有序列表进行合并和排序的例子
  5. 不同角色进入使用不同功能_如何在不同页面上使用不同的Joomla CSS
  6. 14英寸电脑长宽多少_连接4K显示器流行,带雷电3雷电4接口的笔记本要多少钱?...
  7. c语言最简单程序实例,C语言第一个简单实例
  8. Catlike Coding网站文章解析 -- 2.Procedural Grid
  9. GPU Gems1 - 9 有效的阴影体渲染
  10. 12bit灰度图像映射到8bit显示及python 实现