UI自动化面试高频题

一、多台安卓 / iOS 同时跑一套脚本,怎么实现?

核心思路就一句话:
一套脚本 + 设备分发 + 多进程/多线程并行 + 设备唯一标识区分

1)先解决:怎么让脚本知道“跑哪台设备”?

不管是安卓还是 iOS,关键是设备 ID

  • 安卓:adb devices 拿到的 serial number
  • iOS:udid

脚本启动时,根据设备ID绑定对应驱动

  • Appium:desired_caps 里填 udid / deviceName
  • 多设备时,每个设备启动一个独立 driver 实例

2)多设备并行怎么跑?

主流就 3 种方案,你挑最常用的说:

① Python + pytest-xdist(最简单、最常用)

  • 脚本一套不变
  • 通过命令行指定并行数:
    pytest -n autopytest -n 4
  • 框架自动分配用例到不同进程
  • 每个进程绑定不同设备ID

② 设备池 + 用例分发

  • 维护一个设备列表:[设备1, 设备2, 设备3...]
  • 运行时轮询分配:用例1→设备1,用例2→设备2…
  • 每个设备一个 driver,互不干扰

③ 云测平台/企业内部设备集群

比如:

  • MCloud、STF、测云、阿里云测
  • 平台统一管理设备,你只提交脚本+用例
  • 平台自动调度、并发执行、返回报告

面试时可以这么总结:

我们项目是一套脚本兼容多设备,通过设备ID区分不同手机,用 pytest 多进程并行,同时启动多个 Appium 服务,每个服务绑定一台设备,实现多机同时跑。


二、不同机器网络状态不同 → UI展示不一样,怎么处理?

这是自动化稳定性核心痛点,面试官最爱问。

典型问题

  • 网络好:直接进页面
  • 网络差:出现 Loading / 弱网提示 / 重试按钮
  • 无网络:断网页面 / 弹窗
  • 不同设备加载速度不一样 → 元素找不到、脚本直接挂

在面试里可以说的标准解决方案(非常专业)

1)统一加智能等待,不用固定 sleep

  • 不用 time.sleep(3)
  • 用显示等待:等待元素可点击 / 可见
  • 等待页面关键元素加载完成,再执行下一步

这样不管网络快慢,都能等到位。

2)做页面状态判断(分支处理)

脚本执行前先判断当前页面是什么:

if 出现Loading:
    等待Loading消失
elif 出现弱网弹窗:
    关闭弹窗 / 点击重试
elif 出现无网络页面:
    用例标记为跳过/失败,记录网络异常
else:
    正常执行业务

3)统一设置网络环境基线

为了避免“这台过那台不过”:

  • 自动化执行时,统一切到指定网络
    如:使用 Charles 固定弱网 / 正常网
  • 或在脚本开始前校验网络状态,不满足则不执行
  • 避免网络差异导致用例随机失败

4)设备差异兼容(分辨率/系统版本)

  • 定位器尽量用 id / accessibility id
  • 少用绝对坐标点击、绝对路径
  • 不同分辨率导致元素位置变化时,用相对定位

三、面试标准答案(精简版)

问:多设备跑同一套UI自动化怎么实现?

首先通过设备ID(安卓serial、iOS udid)区分不同设备,每个设备启动独立的driver实例;然后使用多进程或分布式方式并发执行,比如pytest-xdist实现并行,脚本只需要一套,通过配置文件或设备池分配用例,最终统一生成报告。

问:不同设备网络不同导致UI不一样怎么处理?

第一,统一使用显示等待,不使用固定sleep;第二,在关键步骤前做页面状态判断,处理loading、弱网弹窗、断网页面等分支;第三,执行前统一网络基线,避免环境差异;第四,用稳定的元素定位,减少设备分辨率带来的影响,从而提高用例稳定性。


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

June bug

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值