专栏文章 如何利用 Airtest 做一些简单的装包小任务

fishfish-yu · 2022年11月25日 · 最后由 fishfish-yu 回复于 2022年12月01日 · 6982 次阅读

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

1. 前言

很多同学对于 Airtest 都有一些刻板的印象,觉得 Airtest 只能截图,然后进行一些简单的点点点操作。

但实际上,抛开 Airtest 的图像识别点击功能,Airtest 还能帮助我们连接设备,然后完成一些别的小任务,比如装包、打开应用、检查应用等等(不需要截图、也不需要生成报告)。

2. 利用 Airtest 完成装包任务的脚本示例

示例为一个非常简单的纯.py脚本例子,只连接设备,然后安装并打开指定应用即可,log 都不需要保存(可以看到auto_setup里面logdir=False):

# -*- encoding=utf8 -*-
__author__ = "AirtestProject"

from airtest.core.api import *
from airtest.cli.parser import cli_setup

auto_setup(__file__, logdir=False, devices=["android://127.0.0.1:5037/PFT4PBLF75GQHYBM"])

# 包体存放的路径
APK_FILE = r"D:\demo\NeteaseCloudMusic_Music_official_8.7.11.220318190241_32.apk"
# 包名
PACKAGE_NAME = "com.netease.cloudmusic"

# 安装应用
install(APK_FILE)

# 打开应用
start_app(PACKAGE_NAME)

3. 装包接口详解

1)install()

install()是 Airtest 的核心 API 之一,默认是用当前的设备去执行安装操作,实际上里面调用了 device().install_app(),所以上文中的案例,我们也可以写成这样:

...

# 安装应用
device().install_app(APK_FILE)

# 打开应用
start_app(PACKAGE_NAME)

...

其中,install_app除了需要传入filepath参数之外,还有 2 个参数我们也可以关注下:

  • replace,如果应用已存在,是否替换,默认为False
  • install_optionsinstall命令的额外选项,默认是 []
# adb install -r -t D:\demo\test.apk
device().install_app(r"D:\demo\test.apk",install_options=["-r", "-t"])
2)pm_install()

pm_installairtest.core.android.adb模块下面的安装方法,在 Airtest1.2.7 版本,我们对这个安装接口进行了增强:

  • 支持了安装参数的传入(与 adb.install 保持一致),
  • 支持了 中文路径、一些 包含特殊符号路径
  • 对路径的改动同时影响到了 adb.pull()adb.push() 接口,支持了中文路径、包含斜杠的路径(比如 \g 这样的字符也会有问题)、包含特殊符号(空格、括号等)的路径
  • pm_install 安装完毕后,会进行 adb shell rm apk 的操作,超时时间 30 秒

上文的小任务,也可以通过pm_install接口来实现:

...

# 安装应用
device().adb.pm_install(APK_FILE)

# 打开应用
start_app(PACKAGE_NAME)

...

Airtest1.2.7 版本之后,pm_install的参数与install_app保持了一致,同样支持:

  • replace,如果应用已存在,是否替换,默认为False
  • install_optionsinstall命令的额外选项,默认是 []
3)拓展:install 的安装参数

Airtest 封装的安装接口,包含以下安装参数可以使用:

  • -t,允许测试包
  • -l,锁定应用程序
  • -s,把应用程序安装到 sd 卡上
  • -g,为应用程序授予所有运行时的权限
  • -r,替换已存在的应用程序(覆盖安装)
  • -d,允许降级覆盖安装

4. 小结

本文主要使用 Airtest 封装的安装接口,采用多种方式实现了装包的小任务,另外还拓展了下安装参数的介绍,同学们可以自己动手试试哟~


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

官方答疑 Q 群:117973773

呀~这么认真都看到这里啦,帮忙点击左下角的爱心,给我点个赞支持一下把,灰常感谢~

共收到 2 条回复 时间 点赞

很早就知道有这个工具,没有实际运用起来,看完之后看来有很多可研究的地方

tangoliver 回复

可以试试,它不是只能做一个图像识别的 UI 工具而已~

需要 登录 后方可回复, 如果你还没有账号请点击这里 注册