uiautomator2-监视操作

WatchContext==>监视上下文

  • 基础用法
with d.watch_context() as ctx:
# 下面三行代码时立即执行完的,不会有什么等待
	ctx.when("^立即(下载|更新)").when("取消").click() # 当同时出现(立即安装或立即取消)和取消按钮的时候,点击取消
	ctx.when("同意").click() # 当出现同意按钮的时候,点击同意
	ctx.when("确定").click() # 当出现确定按钮的时候点击确定
  • 使用call函数来触发函数回调
# 使用call函数来触发函数回调
# call支持两个参数,d和el,不区分参数位置,可以不传参。如果传参变量名不能写错
ctx.when("仲夏之夜").call(lambda d: d.press("back")) # 当有元素"仲夏之夜"出现,点击返回按钮
ctx.when("确定").call(lambda el: el.click())

Tip:lambda函数用法:
语法:lambda <参数> : <表达式>==>冒号前面的是冒号后面表达式传入的参数
返回值:表达式的值就是lambda函数的返回值

  • 其他操作
with d.watch_context(builtin=True) as ctx:
	ctx.when("@tb:id/jview_view").when('//*[@content-desc'图片']).click()
  • 不使用with as方法
ctx = d.watch_context()
ctx = when('设置')。click()
ctx.wait_stable() # 等待界面不再有弹窗,关闭监视器

ctx.close()

Watcher==>监视器

  • 基础用法
# 注册匿名监控当出现”安装“时点击
d.watcher.when("安装").click()

# 注册名为ANR的监控,当出现ANR和Force CLose时,点击Force CLose
d.watcher("ANR").when(xpath="ANR").when("Force CLose").click()
  • 使用call回调函数来触发监控
d.watcher.when("抢红包").press("back")
d.watcher.when("//*[@text='Out of memory']").call(lambda d: d.shell('am force-stop com.im.qq'))

def click_callback(d: u2.Device):
	d.xpath("确定").click() # 在回调中调用不会再次触发watcher
d.xpath("继续").click() # 使用d.xpath检查元素的时候,会触发watcher(目前最多触发5次)
  • 监控操作
# 移除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()

watcher.py源码

  • 1
    点赞
  • 12
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值