前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Android自动化测试中媒体文件的操作技巧

Android自动化测试中媒体文件的操作技巧

作者头像
测试开发囤货
发布2023-08-08 09:44:46
5170
发布2023-08-08 09:44:46
举报
文章被收录于专栏:测试开发囤货
Android自动化测试中媒体文件的操作技巧

在进行Android自动化测试时,我们常常需要通过adb工具向设备内推送文件,例如推送视频文件到相册目录。但是系统的媒体扫描机制并不能实时识别新增文件,导致我们的测试无法观察到文件变化。

为了优化效率,简化自动化测试的流程,本文将介绍如何使用adb强制触发媒体扫描的方法,实现文件变化的实时观察。

一、媒体扫描机制简介

Android系统中有一个媒体扫描服务MediaScannerService,它会定期扫描设备存储空间的媒体文件,提取文件信息生成媒体数据库。各类媒体应用如相册、音乐播放器都依赖这个数据库展示文件。当通过adb等方式新增文件时,由于扫描不实时,需要等待下次系统自动扫描或者手动刷新,才能在应用中展现新文件。这为我们的自动化测试带来不便。

二、强制执行媒体扫描

Android系统提供了多种方式强制触发媒体扫描,通过adb命令可以方便使用。

  1. 通过adb shell 使用media scanner命令

在adb shell内可以直接执行media scanner命令,扫描指定文件或目录:

代码语言:javascript
复制
//扫描单个文件
media scanner file /sdcard/DCIM/camera/test.jpg 

//扫描整个目录
media scanner file /sdcard/DCIM/camera/

这种方法仅扫描指定文件或目录,适合我们已知文件的位置。

  1. 通过am broadcast命令发送扫描广播

我们也可以通过am(Activity Manager)向系统发送扫描广播,触发媒体扫描服务。

常用的扫描目录广播命令:

代码语言:javascript
复制
adb shell am broadcast -a android.intent.action.MEDIA_MOUNTED -d file:///sdcard/

针对单个文件扫描的命令:

代码语言:javascript
复制
adb shell am broadcast -a android.intent.action.MEDIA_SCANNER_SCAN_FILE -d file:///sdcard/DCIM/camera/test.jpg

三、命令解析

上面命令中的每个参数含义如下:

代码语言:javascript
复制
adb shell   //进入adb shell环境
am         //调用Activity Manager
broadcast  //发送广播
-a         //指定action,扫描媒体文件
-d         //指定扫描目录

结合broadcast和参数,我们可以发送各类系统广播给Activity Manager

四、实际应用

知道上述原理后,在我们「批量视频发布自动化的脚本」中加入这些命令,例如:

代码语言:javascript
复制
//推送文件
adb.push(filename, '/sdcard/DCIM/Camera')
sleep(1)
//发送扫描广播  
shell('am broadcast -a android.intent.action.MEDIA_SCANNER_SCAN_FILE -d file:///sdcard/DCIM/Camera/')
//打开相册选取最新的视频进行发布操作
...
...
...

这就可以在文件推送后立即执行扫描,误差控制在1秒以内,相当于实时扫描文件变化。

另外,定时执行上述扫描命令也可以用来监控目标目录文件变化,发现新文件后执行相应逻辑。

五、优化效果

应用这种强制扫描技巧,可以明显优化我们的自动化测试脚本:

  1. 避免手动或等待扫描文件,提高执行效率
  2. 减少因文件扫描延迟导致的异步问题
  3. 可以随时观察目录文件变化,不需要去重启设备,支持更可靠的自动化流程

六、注意事项

在执行强制媒体扫描时,也需要注意一些问题:

  1. 频繁扫描会占用更多CPU和电量,不要过度扫描。
  2. 广播扫描只通知媒体数据库更新,不会刷新相册应用内存缓存,可能需要重新打开相册应用才能看到最新文件。
  3. 某些Android版本在外部存储空间需要写入权限,否则扫描会失败。
  4. 扫描命令返回值需要检查,如果扫描失败则可能需要确认目录权限或重新执行。
  5. 和目标设备的Android版本相关,部分低版本设备不支持某些扫描命令。

七、总结

熟练运用adb shell的媒体扫描命令可以显著提升我们Android自动化测试的效率,特别是在需要频繁查看文件变化的场景中。文件变化是自动化测试一个关键的观察点。

当然,过度扫描会有性能影响,仍需针对实际需求酌情使用。但适当应用扫描命令带来的好处是显著的。

作为自动化测试人员,掌握这些技巧可以帮助我们编写出更智能、可靠的自动化测试脚本。培养运用adb shell的习惯也使我们更好地理解Android系统,成为出色的自动化测试工程师。

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2023-07-12,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 测试开发囤货 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 一、媒体扫描机制简介
  • 二、强制执行媒体扫描
  • 三、命令解析
  • 四、实际应用
  • 五、优化效果
  • 六、注意事项
  • 七、总结
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档