如何实现以下的逻辑,在出现 弹窗时就进行点击,不出现就运行其他代码
app UI自动化弹窗监听机制
如有帮助,望采纳
https://blog.csdn.net/May_JL/article/details/122362020
不可以直接判断吗
import uiautomator2 as u2
import os
import time
base_dir = os.path.dirname(__file__)
apk_path = os.path.join(base_dir, 'apks/bilibili.apk')
d = u2.connect_usb(serial='MDX0220924018819')
# 从安装到登录成功后,可能会出现的弹窗,在这里进行注册,这个是华为手机出现的弹窗类型
d.watcher.when('继续安装').click()
d.watcher.when('完成').click()
d.watcher.when('同意并继续').click()
d.watcher.when("我知道了").click()
d.watcher.start()
d.app_install(apk_path)
d.app_start('tv.danmaku.bili')
d(text='我的').click()
time.sleep(3)
if d(resourceId="tv.danmaku.bili:id/btn_change_account").exists:
d(resourceId="tv.danmaku.bili:id/btn_change_account").click()
else:
d(resourceId="tv.danmaku.bili:id/tv_login").click()
time.sleep(3)
d(resourceId="tv.danmaku.bili:id/username").set_text('xxxxxxxxx')
d(resourceId="tv.danmaku.bili:id/userpwd").set_text('xxxxxxxx')
d(resourceId="tv.danmaku.bili:id/log_reg_checkbox").click()
time.sleep(2)
d(resourceId="tv.danmaku.bili:id/btn_login").click()
d(text='首页').click()
弹窗处理有2种方法:
if d(text='CANCEL').exists(timeout=3): #这里代表最多等待3S,时间可以随意设置
d(text='CANCEL').click()
2.使用watcher
在程序得开始,启动一个watcher,遇到改元素,就会点击,注意,这个方法在程序结束以后,需要停止Watcher
watcherList = ["ALLOW", "Allow", "Close app", "ALLOW ALL THE TIME", "WHILE USING THE APP"]
for i in watcherList:
try:
d.watcher(i).when(i).click()
except:
pass
d.watcher.start()
#此处其他处理操作
#最终需要停止,否则导致进程愈来愈多
d.watcher.stop()
```
本人主要编写uiautomagtor2自动化测试工具及脚本,有问题可以随时沟通