UiAutomator 请问下大家在做自动化测试的时候有遇到需要测试电影院选座的场景吗?请教下都是怎么解决的啊

哲豪 · November 29, 2021 · Last by 哲豪 replied at December 06, 2021 · 4027 hits

现在遇到了电影院选座的问题,选座的控件是自绘的拿不到任何其他控件。目前只能通过 RGB 的方式实现了选空座,但不能按照指定的要求去选座(比如有 39、42 元的区域等,情侣座等)这些都没法去判断,图像识别 也试过不行。

大家有什么好的思路吗?先谢谢了😃

共收到 22 条回复 时间 点赞

好题目

恒温 回复

大佬可有思路啊,能否指点下 😭

问题的核心还是在于拿不到控件信息吧,用图像识别的多模板匹配是可以做到获取控件信息的。
只要实现这样一个函数,就可以解决问题,
输入:座位截图
输出:座位信息矩阵
[
[Seat(), Seat(), Seat(), Seat(), Seat()],
[Seat(), Seat(), Seat(), Seat(), Seat()],
[Seat(), Seat(), Seat(), Seat(), Seat()],
[Seat(), Seat(), Seat(), Seat(), Seat()],
]
Seat 类里面包含了座位的是否可选、价格、类型等信息

frankxii 回复

谢谢,我这边测试了图像识别也没法识别,其次就是识别了该怎么区分对应哪个分类的啊

突然想到自绘的话也是从后端接口拿的数据,可以先请求后端座次信息接口,再计算对应坐标点,通过坐标的方式操作控件。

frankxii 回复

谢谢,是第三方 app, 然后首次选中座位后,会放大,坐标会发生变化。

是否可以先把区域切块,然后在选座位区域在根据坐标计算去点击?

哲豪 回复

这种情况我个人能想到的就还是多模板匹配了,个人比较擅长用图像识别的方式做 UI 自动化。

  1. 把不同座位的图截下来
  2. 遍历座位模板,多模板匹配,找出图中不同座位的分布信息
  3. 组合不同座位的分布信息,就可以得到上面我说的整体座位信息矩阵。分类的话就是按模板来的,匹配什么模板,就对应什么分类信息

  4. 涉及坐标变化,通常坐标变化都是有规律的,操作完之后记录整体的坐标变化量或者复位之后再继续操作也行。

  5. 可能还涉及不同设备的兼容性问题 (用图像识别都会遇到这个问题),先搞定上面的问题再看吧

这个方案能解决问题,就是需要对图像处理和识别比较熟练。

记录第一列第一行座位的坐标,假设是 100,100, 那么第一列第二行就可能是 110,100,第二列第一行可能是 100,110.。。。。。。只要记录一个坐标,还有座位像素大小,就可以推算出其他座位的位置,不难吧

哲豪 #10 · November 30, 2021 Author
明仔 回复

谢谢,关键在于怎么区分座位

哲豪 #11 · November 30, 2021 Author
frankxii 回复

谢谢,公司有搭建的图像匹配,但是识别不了,或许是可信度调的高。之前我了解到图像识别好像识别不了颜色的吧,如果要选特定价位的座位呢。

哲豪 回复

能识别颜色啊,rgb 三个通道拉出来匹配

你好,能看看这个控件的元素吗?

hakaboom 回复

其实这个里面还会有个问题就是,选座之后,座位不是纯色,现在有的是广告 LOGO,随时都有可能变化的。

这种合适做 UI 自动化吗?

为啥不直接传座位号呢,走 UI 自动化是出于什么考虑

dive 回复

死路一条

airtest 工具的截图识别可以吗?

这种业务场景,会经常变,今天 39,42 特价是一个样式,明天可能 xx 活动又是一个样式,你的 UI 脚本维护跟不上就跑不过去,但是这又不是程序的 bug,想不出来你这么设计的目的,或者说你接入 AI 测试的方式去让机器学习去跑这种 case?

先任意的点,再取消,算出特性指标??

哲豪 #21 · December 06, 2021 Author
我去催饭 回复

客户那边提出要测这种的。。

哲豪 #22 · December 06, 2021 Author
Jacky 回复

最开始点击后会放大,就无法在用之前的坐标去取消😭

需要 Sign In 后方可回复, 如果你还没有账号请点击这里 Sign Up