此文章来源于项目官方公众号:“AirtestProject”\
版权声明:允许转载,但转载必须保留原链接;请勿用作商业或者非法用途

1. 前言

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

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

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

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

1)adb 知识

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

adb pull <src> <dst>

其中:

2)Airtest 封装的 adb 功能

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

from airtest.core.android import *
​
device().adb.pull(scr,dst)

3)文件读写与删除功能实现

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

# -*- 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()

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

3. 小结

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

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


AirtestIDE 下载:airtest.netease.com/\
Airtest 教程官网:airtest.doc.io.netease.com/\
搭建企业私有云服务:airlab.163.com/b2b

官方答疑 Q 群:117973773


↙↙↙阅读原文可查看相关链接,并与作者交流