Airtest从PC传输文件到手机

如何实现自动将文件从PC端传输到手机端?关于传统的文件操作是没有办法实现的,这主要是因为手机连接用的不是文件系统。
如果我们从PC端查看文件路径,文件夹路径显示的是This PC这种是不被文件类库识别的。
一般来说,我们可以通过adb来实现,在使用adb中最常见的问题,就是

  • 原始文件不存在
    • 检查文件路径,如果路径存在空格,用r加前缀(针对于Airtest)
  • 目标文件不存在
    • 手机端初始路径是/storage/sdcard0,后续再接真实路径
  • 操作执行完成后文件在手机端不显示
    • 需求通过broadcast来刷新文件
  • 文件传输成功,也刷新了,但是文件在手机显示的不是最新的
    • 有可能是复制替换的同一文件名,试试在push到手机端时,如果是覆盖同一文件,建议修改文件名
    • 一般一段时间后会刷新,由手机系统控制,需要实时刷新,建议用步鄹一

这里分享两种方式:

  • 一种是直接通过cmd来执行
    1
    2
    adb push 'file path in pc' '/storage/sdcard0/target path in phone'
    adb shell am broadcast -a android.intent.action.MEDIA_SCANNER_SCAN_FILE -d 'file:///storage/sdcard0/target path in phone'
  • 另外一种是通过Airtest的Push
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    # -*- encoding=utf8 -*-
    __author__ = "Edward"

    from airtest.core.api import *
    from airtest.core.android.android import *
    auto_setup(__file__)

    android = Android()

    baseFolder = r'C:/Users/Edward/System Folder/Desktop/苏宁/Auto/';
    targetFolder = r'/storage/sdcard0/00/';

    android.adb.push(baseFolder + group + '/' +filename,targetFolder + group + '/' +filename);
    android.adb.shell(r'am broadcast -a android.intent.action.MEDIA_SCANNER_SCAN_FILE -d file://' + targetFolder + group + '/' +filename);