图中的关闭按钮实际上是不显示在 App Source 的 由于广告蒙版挡住需要关闭才能进行自动化测试的操作 这边是拿淘宝的 APP 做演示,实际上公司的 APP 广告层在顶部时是完全获取不到 App Source 所以无法执行点击 返回按钮不生效,无法关闭弹框(driver.keyevent(4)) 图像识别操作坐标点击似乎不太稳定
坐标撒,屏幕宽高比例计算出坐标
广告的样式很多种的,大小宽度都会变化,不是固定的坐标就行的,目前感觉 appium 不能操作的话只能靠图像识别返回坐标位置再去点击操作
pip install popups
图像识别不靠谱,还是老老实实的让开发加 id 吧 关闭的按钮太小了,识别不到
我试了下,里面集成了 airtest 的图像识别。成功了一两次,可能还是图标太小了。不过方法还是很好的
还有一个问题是,如果集成到框架里,5037 端口也是 appium 所需要构建 session 连接的,这个图像识别完之后会导致 appium 的 driver 断开链接
pip install -U popups
from popups.dismiss import popup, UT # 默认是False状态,使用时需要打开 UT.ENABLE = True # 图片模版路径,不传则使用popups自带的模版库 IMG_PATH = 'your_tpl_path' # 是否启用系统弹窗处理 UT.SYS = True # 是否启用APP弹窗处理 UT.APP = False # 是否是iOS系统 UT.iOS = True # 循环执行次数,默认为1次 UT.LOOP = 1 # 超时时间,默认为5秒 UT.TIMEOUT = 5 # 单独使用popup时需要传入设备URL,配合utx使用时无需关注 DEVICE = 'Android://127.0.0.1:5037/SJE5T17B17' popup(devices=DEVICE)
只用 appium 框架么 图形识别考虑一下
它可能是一个 PopupWindow(悬浮框) 通过 Android Studio 的 Layout Inspector 可以获取到当前 DecorView 之外的元素,然后获取它的 ID 等(如有)。 如图: (uiautomatorviewer 只能获取到当前 DecorView )
使用 Layout Inspector 查看 APP 元素,需要当前在 App 上运行的为 debug 包,而非 release 包。