• 用Airtest快速实现手机文件读写与删除功能


    1. 前言

    前几天有同学留言,能不能安排“读写手机文件”的示例。我们今天就来实现这个小功能。

    当然,熟悉adb的同学,看到这个需求,肯定很开心,不就是一个 adb pushadb pull 嘛,非常简单呀。

    确实如此,那结合Airtest,我们该如何写脚本呢?接下来我们就详细看看。

    2. 手机文件读写与删除功能

    1)adb知识

    Airtest不仅给我们提供了连接和操控手机的功能,还封装了绝大部分adb功能供我们便捷使用,以“从手机上复制文件到本地计算机”为例,使用adb指令的话,是这样的:

    adb pull  
    
    • 1

    其中:

    • src:要传输的 Android 文件路径
    • dst:要传输到的本地计算机路径
    2)Airtest封装的adb功能

    而在Airtest里面,adb功能封装在 irtest.core.android 模块里面,我们可以编写下述脚本实现 adb pull 指令的功能:

    from airtest.core.android import *
    
    device().adb.pull(scr,dst)
    
    • 1
    • 2
    • 3
    3)文件读写与删除功能实现

    了解这些之后,我们就可以非常轻松地用Airtest实现手机文件读写与删除功能啦:

    image

    # -*- encoding=utf8 -*-
    __author__ = "AirtestProject"
    
    from airtest.core.api import *
    from airtest.core.android import *
    auto_setup(__file__)
    
    dev = device()
    
    phone_file = r"/sdcard/Download/test.png"  # 手机文件路径
    local_path = r"E:/test_file/"  # 电脑存储路径
    
    local_file = r"E:/test_file/test1.png"  # 电脑文件路径
    phone_path = r"/sdcard/Download/"  # 手机存储路径
    
    del_file = r"/sdcard/Download/test1.png"  # 要删除的手机文件
    
    # 从手机上复制文件到本地
    def pull_file():
        dev.adb.pull(phone_file,local_path)
        print("文件已复制到本地")
    
    # 将本地文件推送到手机
    def push_file():
        dev.adb.push(local_file,phone_path)
        print("文件已推送到手机")
    
    # 删除手机上的文件
    def delete_file():
        shell("rm %s" % (del_file))
        print("手机文件已删除")
        
    if __name__ == '__main__':
        pull_file()
        push_file()
        delete_file()
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27
    • 28
    • 29
    • 30
    • 31
    • 32
    • 33
    • 34
    • 35
    • 36

    PS:Airtest里的 device().adb.pulldevice().adb.push 都支持中文路径。

    3. 小结

    今天的小需求就实现到这里啦。其实,用Airtest封装的adb能力,还可以帮助我们实现非常多有趣的小场景,感兴趣的同学可以上手尝试下。

    另外,有其它想要实现的功能,欢迎给我们留言哦!

  • 相关阅读:
    react hooks中为useState添加回调函数以及强刷函数
    2022最火的Linux性能分析工具--perf
    IDEA使用配置
    spring使用模板模式
    上网行为管控,一款软件就可以实现!
    【POJ No. 1011】 木棒 Sticks
    Python创建“全是1”的数组,np.ones()函数
    docker发布dubbo服务 外部程序访问不到问题处理
    Centos7中docker安装教程-详细版
    卡奥斯第二届1024程序员节正式启动!
  • 原文地址:https://blog.csdn.net/AirtestProject/article/details/132618090