欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

python uiautomator2 新版本2.4.6之watcher的玩法

程序员文章站 2022-03-28 20:04:46
最近将uiautomator2升级到最新版本了,运行之前的脚本发现涉及watcher部分的全部报错,大家来看看新版本的watcher如何玩 用法举例 注册监控 # 常用写法,注册匿名监控 d.watcher.when("安装").click() # 注册名为ANR的监控,当出现ANR和Force C ......

最近将uiautomator2升级到最新版本了,运行之前的脚本发现涉及watcher部分的全部报错,大家来看看新版本的watcher如何玩

用法举例

注册监控

# 常用写法,注册匿名监控
d.watcher.when("安装").click()

# 注册名为anr的监控,当出现anr和force close时,点击force close
d.watcher("anr").when(xpath="anr").when("force close").click()

# 其他回调例子
d.watcher.when("抢红包").press("back")
d.watcher.when("//*[@text = 'out of memory']").call(lambda d: d.shell('am force-stop com.im.qq'))
监控操作

# 移除anr的监控
d.watcher.remove("anr")

# 移除所有的监控
d.watcher.remove()

# 开始后台监控
d.watcher.start()
d.watcher.start(2.0) # 默认监控间隔2.0s

# 强制运行所有监控
d.watcher.run()

# 停止监控
d.watcher.stop()

# 停止并移除所有的监控,常用于初始化
d.watcher.reset()

从上面截出来的可以看出,主要是when()这个条件和click()操作跟之前旧版本不一样,之前旧版本是可以在when()和click()里面带上具体selector名称,但新版本全部去掉了

1 # -*- coding:utf-8 -*-
2 import time
3 import uiautomator2 as u2
4 d = u2.connect()
5 d.watcher.when("ok").click()  # 注册一个匿名watcher
6 for i in range(10):
7     time.sleep(1)
8     d.watcher.start()  # 启动后台watcher监视,如果有监视到有弹框中有ok的就执行上面所注册的watcher并click