Appium 问下针对类似这样的广告样式,怎么在自动化的时候去关闭掉

Time · 2022年03月31日 · 最后由 摘星星的诗人 回复于 2022年07月25日 · 6018 次阅读

图中的关闭按钮实际上是不显示在 App Source 的
由于广告蒙版挡住需要关闭才能进行自动化测试的操作
这边是拿淘宝的 APP 做演示,实际上公司的 APP 广告层在顶部时是完全获取不到 App Source 所以无法执行点击
返回按钮不生效,无法关闭弹框(driver.keyevent(4))
图像识别操作坐标点击似乎不太稳定

共收到 9 条回复 时间 点赞

坐标撒,屏幕宽高比例计算出坐标

Time #2 · 2022年03月31日 Author
Karaser 回复

广告的样式很多种的,大小宽度都会变化,不是固定的坐标就行的,目前感觉 appium 不能操作的话只能靠图像识别返回坐标位置再去点击操作

pip install popups

Time #6 · 2022年04月01日 Author

图像识别不靠谱,还是老老实实的让开发加 id 吧😅 关闭的按钮太小了,识别不到

Time #5 · 2022年04月01日 Author
Pactortester 回复

我试了下,里面集成了 airtest 的图像识别。成功了一两次,可能还是图标太小了。不过方法还是很好的😀

Time #6 · 2022年04月01日 Author
Pactortester 回复

还有一个问题是,如果集成到框架里,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 包。

需要 登录 后方可回复, 如果你还没有账号请点击这里 注册