You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何为二维码扫描应用的端到端测试注入二维码图片?

无源码实现二维码扫描自动化测试方案(Android/iOS)

Android 端实现方式

模拟器/真机通用:屏幕画面覆盖法

直接将二维码图片推送到设备屏幕上层,覆盖扫码应用的取景框区域,让应用识别图片中的二维码:

  • 先通过adb push qrcode.png /sdcard/将本地二维码图片传到设备存储
  • 用系统自带图片查看器打开图片并全屏显示,命令如下:
    adb shell am start -a android.intent.action.VIEW -d file:///sdcard/qrcode.png -n com.android.gallery3d/.app.GalleryActivity
    
  • 切换回扫码应用,调整图片位置覆盖取景框即可完成扫描。如果需要自动化,可结合adb命令切换应用、调整窗口位置。

模拟器专属:自定义相机输入源

主流Android模拟器(如夜神、BlueStacks、Android Studio自带模拟器)均支持修改相机输入:

  • 进入模拟器的设置/开发者选项,找到「相机模拟」或「输入源设置」
  • 将相机输入切换为「本地图片」,选择准备好的二维码图片
  • 启动扫码应用调用相机时,会直接读取该图片并完成扫描,无需额外操作。

iOS 端实现方式

模拟器专属:替换相机快照文件

iOS模拟器的相机功能基于本地文件模拟,可通过替换快照文件实现扫码:

  • 找到目标模拟器的沙盒DCIM目录,路径格式为:
    ~/Library/Developer/CoreSimulator/Devices/[模拟器UUID]/data/Media/DCIM/100APPLE
    
  • 将准备好的二维码图片重命名为IMG_0001.JPG(或目录中已有快照的命名格式),替换原有文件
  • 重启模拟器的相机服务,或直接重启模拟器,启动扫码应用调用相机即可识别图片。

真机通用:AirPlay投屏覆盖法

利用Mac的QuickTime实现画面投屏,将二维码图片展示在设备屏幕上:

  • 用Lightning/USB-C线连接iOS真机到Mac,打开QuickTime并选择「文件-新建影片录制」
  • 在录制窗口的相机选择中,选中连接的iOS设备,此时设备屏幕会投屏到Mac
  • 在Mac上打开二维码图片,调整窗口大小和位置,让图片完全覆盖设备屏幕上的扫码取景框
  • 扫码应用会识别投屏的二维码图片,完成扫描流程。

通用注意事项

  • 确保二维码图片分辨率足够、无模糊,尺寸适配扫码应用的取景框比例,提升识别成功率
  • 部分带有反作弊机制的应用(如金融类APP)可能会检测相机流的真实性,这类场景上述方法可能失效,需结合更底层的hook技术,但无需源码的方案局限性较大
  • 可通过脚本自动化整个流程:Android用adb脚本串联推图、启动应用、切换窗口;iOS用AppleScript自动替换模拟器文件或控制QuickTime投屏。

内容的提问来源于stack exchange,提问作者stoefln

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.27 15:27:17