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

如何实时更改安卓模拟器虚拟场景图像以适配多条码扫描用例UI测试

解决方案

针对你的需求,最适配端到端UI测试要求、无需重启模拟器的方案如下:

方案一:通过模拟器控制台动态替换虚拟场景海报

Android 模拟器自带的控制台支持运行时动态修改虚拟场景的海报资源,无需重启模拟器、不改变原有测试逻辑,完全满足端到端扫描的测试要求:

  1. 首先确认模拟器端口号:执行adb devices即可查看,默认连接的模拟器端口为5554
  2. 执行替换海报的命令格式为:camera virtualscene set-poster <海报索引> <本地条码图像绝对路径> <海报宽度(米)> <海报高度(米)>
  3. 你之前配置的条码默认对应索引为0的海报,直接修改该索引对应的资源即可,宽高设置为0.1左右适配虚拟场景的展示比例即可,命令执行后立即生效

方案二:Kaspresso 测试框架落地方法

你可以封装一个通用工具方法,在每个测试用例的前置阶段调用,自动替换当前用例对应的条码图像:

fun switchTestCaseBarcode(barcodeLocalPath: String, posterIndex: Int = 0) {
    val execCommand = arrayOf(
        "bash", "-c",
        "echo 'camera virtualscene set-poster $posterIndex $barcodeLocalPath 0.1 0.1' | nc localhost 5554"
    )
    Runtime.getRuntime().exec(execCommand).waitFor()
    // 可选:增加100ms等待确保虚拟场景资源加载完成
    Thread.sleep(100)
}

在测试用例的@Before阶段传入当前用例对应的条码图像本地路径即可,全程自动化无需人工介入。

宏(macros)功能的使用方法

你观察到的模拟器宏功能也可以实现需求,适合固定测试场景使用:

  1. 先在模拟器右侧菜单栏进入宏录制界面,录制「替换虚拟场景海报为对应条码」的操作步骤,保存为对应测试用例的专属宏
  2. 在Kaspresso测试中执行命令adb emu macro play <宏名称>即可触发宏自动运行,完成条码替换
    该方案灵活度略低于直接调用控制台命令,适合不需要频繁修改条码参数的测试场景。

注意事项

  • 所有测试用的条码图像建议提前存放在模拟器所在设备的固定目录,调用时使用绝对路径避免文件找不到的问题
  • 替换图像后可根据测试设备性能增加短时间等待,确保资源加载完成后再执行扫描操作,提升测试用例稳定性
  • 该方案完全走真实相机扫描流程,不会损失端到端UI测试的有效性

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.03 22:27:01