news 2026/9/9 18:01:03

Airtest环境一键安装脚本:Python依赖与Pocoui部署实战

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
Airtest环境一键安装脚本:Python依赖与Pocoui部署实战

简介:面向尚无Python环境的Airtest自动化测试入门者,压缩包通过批处理脚本实现一键安装Python 3.8并自动配置环境变量,随后安装pip以及airtest、pocoui模块,大幅降低搭建门槛。脚本允许自行替换安装包和修改版本号,适配其他Python版本或依赖库,适合未装Python或希望快速重建测试环境的开发者使用。压缩包共649个文件,整体约28.34MB。其中493个py文件是airtest与pocoui等模块的源码实现,67个rst和27个md文档提供接口说明与使用指南,7个exe程序与1个bat脚本构成安装主体,另有license、txt等常规文件。目录结构完整,解压后即可按说明执行。当前已有608人学习/下载,适合个人开发者、测试人员在进行UI自动化环境搭建时直接复用,也可作为学习批处理与Python环境部署的参考。

1. 项目概述与需求拆解

做UI自动化测试的应该都绕不开airtest,网易开源的那个跨平台自动化框架,安卓、iOS、Windows上的应用都能跑,既能靠图像识别点击,也能配合poco控件树精确定位控件。这个标题里的"aritest"其实是airtest的笔误,要装的环境就三样:Python解释器、airtest框架本体、pocoui控件库。我之所以写这个一键脚本,是因为在干净机器上手工装这一套环境,至少二十分钟起步,而且坑一个接一个,装完还不能保证能跑。

这个方案适合两类人。一类是刚接触airtest的新人,别在装环境这一步就被劝退;另一类是需要在多台测试机、CI节点上重复部署环境的测试开发,脚本化部署能把重复劳动压缩成一条命令。下文会用Windows批处理脚本和Linux/macOS shell脚本两种方式,把整套安装流程完整拆开讲清楚,还会把实际执行过程中踩过的版本冲突、pip源慢、Python路径找不到这些坑一并说明白。

1.1 手工安装到底问题出在哪

如果系统里已经有Python了,手动装airtest看起来确实简单,核心就是两条命令:

pip install airtest pip install pocoui

但真实场景根本没这么顺。全新机器上没有Python,你得先装解释器;装完要确认pip可用、PATH配置正确;有些机器默认走国外PyPI源,下载速度慢到怀疑人生;再遇到Python版本和airtest版本不匹配,或者pocoui悄悄拉起了numpy、opencv、Pillow等一大批依赖,中间任何一个环节出错,都要从头排查。我见过不少同事卡在同一个地方:Python装了但pip版本太老,或者64位系统装了32位Python,导致某些依赖包连wheel包都没有,直接现场编译然后失败。

这类问题手动排查一次两次还能忍,但每次换机器都来一遍就非常浪费生命。把这个过程固化成脚本,本质上是把排查经验沉淀进工具里,下次谁再装环境,双击一下脚本就完事。

1.2 适用场景和先决条件

实际工作里,这个一键方案能覆盖的典型场景包括:新入职的测试同学拿到一台新电脑、自动化测试主机重装系统后快速恢复环境、多个测试节点需要部署完全一致的airtest版本、以及本地想快速体验airtest却不想在教程细节里纠结的人。

先决条件看两个:第一,系统支持Windows 10/11或主流Linux发行版;第二,网络能访问外网。如果测试网是隔离网,本文第4.3节也会给出离线安装的补充方案,原理不变,只是把在线源换成离线包目录。

2. 核心依赖拆解与版本选型

先补一个基础认知。airtest不是一个孤立的框架,它的核心引擎是airtest-core,负责截图、图像识别、adb通讯和触控模拟;pocoui也叫PocoUI,是基于层级化控件树的UI定位框架,两者配合才能实现"图像识别+控件定位"混合驱动的效果。所以装环境不能只装airtest,必须连pocoui一起装,否则你写poco脚本时第一步import就会直接报ModuleNotFoundError。

2.1 Python版本选型

airtest官方文档目前推荐的Python版本是3.6到3.11。这个区间不是随便划的,airtest的底层依赖包括opencv-python、numpy、Pillow、yaml等,这些库对Python版本有上限要求。你装个Python 3.12,很多旧版本依赖包没有对应的wheel包,pip只能临时编译,大概率直接编译失败。

脚本里我会优先判断系统里是否已有Python,已有且版本在3.6到3.11之间就直接复用;如果没有或版本不对,再自动下载安装。Windows下使用python.org官方安装包配合静默参数安装,同时自动写入系统PATH。Linux下则优先复用系统python3,因为Linux的Python环境通常和系统包管理有千丝万缕的联系,擅自装新解释器容易影响系统原有工具链。

注意:不建议为了跑airtest去装Anaconda全家桶。conda的Python环境和pip的依赖解析偶尔会打架,我实际遇到过pocoui在conda环境下因numpy版本被conda锁定而出现的兼容问题。用官方Python解释器最干净。

2.2 airtest和pocoui的依赖关系

pip安装airtest时会自动带上一批第三方库:opencv-python负责图像匹配和特征识别,numpy处理矩阵运算,Pillow处理图像资源,yaml读取配置文件,还有six、enum-compat这类兼容性依赖。pocoui则会再拉起另一批包,比如pyyaml、pyclipper、six等。大量依赖逐个手动装,版本之间很容易互相覆盖或冲突,所以一键脚本的真正价值不只是省掉两条pip命令,更重要的是统一pip源、固定主版本号、控制安装顺序,把不确定性降到最低。

安装顺序也有讲究:先装Python,再升级pip,然后装airtest,最后装pocoui。不建议把airtest和pocoui的安装顺序调换,因为pocoui在某些版本下会调整opencv或numpy的相关依赖,如果它排在后面反而可能变成最终状态,但先装airtest更稳妥,能减少后续import时的意外。

2.3 版本控制策略

脚本里最好固定airtest版本,而不是直接装latest。airtest每个版本多少会有API变化,固定版本能保证同一批机器环境一致、文档和脚本针对的API不漂移、出了问题也能稳定复现。实际使用中我一般锁定当前比较稳定的版本号,比如airtest==1.2.6,然后配合pip freeze把完整版本快照导出来备用。

pocoui我反而不建议锁得太死。pocoui的迭代节奏比airtest更快,经常跟着新版本airtest做配套适配,锁死容易遇到和airtest不匹配的报错,放宽到最新兼容版本反而省事。这个取舍不是标准答案,但在我维护的几个项目里一直很稳。

3. 一键安装脚本实现

这一节直接上代码。Windows环境最实用的是批处理脚本,双击即用;Linux和macOS环境用shell脚本。两个脚本的逻辑完全一致:检查Python、升级pip、装airtest、装pocoui、最后做导入验证。

3.1 Windows批处理脚本

@echo off chcp 65001 >nul setlocal enabledelayedexpansion echo ================================================ echo airtest 环境一键安装脚本 echo ================================================ REM 1. 检查 Python 是否安装 python --version >nul 2>nul if %errorlevel% equ 0 ( echo [INFO] 检测到 Python: python --version ) else ( echo [INFO] 未检测到 Python,开始下载安装 Python 3.10.11... powershell -Command "Invoke-WebRequest -Uri https://www.python.org/ftp/python/3.10.11/python-3.10.11-amd64.exe -OutFile %TEMP%\python-3.10.11-amd64.exe" %TEMP%\python-3.10.11-amd64.exe /quiet InstallAllUsers=1 TargetDir=C:\Python310 PrependPath=1 Include_test=0 echo [INFO] Python 安装完成,请关闭并重新打开命令行窗口 ) REM 2. 升级 pip python -m pip install --upgrade pip -i https://pypi.tuna.tsinghua.edu.cn/simple REM 3. 安装 airtest pip install airtest==1.2.6 -i https://pypi.tuna.tsinghua.edu.cn/simple REM 4. 安装 pocoui pip install pocoui -i https://pypi.tuna.tsinghua.edu.cn/simple REM 5. 验证 python -c "import airtest; print('airtest version:', airtest.__version__)" python -c "from poco.drivers.android.uiautomation import AndroidUiautomationPoco; print('pocoui import ok')" echo ================================================ echo 环境安装完成,以上输出无报错即安装成功 echo ================================================ pause

脚本开头用chcp 65001把控制台切到UTF-8编码,避免中文注释和输出乱码。Python安装参数里PrependPath=1很关键,少了它Python就会被装进去但命令行找不到。下载Python安装包用的是PowerShell的Invoke-WebRequest,比bat里用certutil或bitsadmin更简洁可靠。

3.2 Linux/macOS shell脚本

#!/bin/bash set -e echo "================================================" echo " airtest 环境一键安装脚本 (Linux/macOS)" echo "================================================" # 1. 检查 Python if command -v python3 &>/dev/null; then PYTHON=python3 echo "[INFO] 检测到 Python: $($PYTHON --version 2>&1)" else echo "[ERROR] 未检测到 python3,请先安装 Python 3.6~3.11" exit 1 fi # 2. 输出版本号,便于确认落在推荐区间 $PYTHON -c 'import sys; print("当前 Python 版本: %d.%d" % (sys.version_info.major, sys.version_info.minor))' # 3. 升级 pip $PYTHON -m pip install --upgrade pip -i https://pypi.tuna.tsinghua.edu.cn/simple # 4. 安装 airtest 与 pocoui $PYTHON -m pip install airtest==1.2.6 -i https://pypi.tuna.tsinghua.edu.cn/simple $PYTHON -m pip install pocoui -i https://pypi.tuna.tsinghua.edu.cn/simple # 5. 验证 $PYTHON -c "import airtest; print('airtest version:', airtest.__version__)" $PYTHON -c "from poco.drivers.android.uiautomation import AndroidUiautomationPoco; print('pocoui import ok')" echo "================================================" echo " 环境安装完成" echo "================================================"

shell脚本多用了一个set -e,任何一步执行失败都会立即终止,避免在错误的半成品环境上继续跑后续命令。Linux下选择复用系统自带的python3,而不是自己装新的解释器,原因前面说过,是为了避免污染系统原有依赖。

3.3 镜像源为什么必须配

脚本里大量出现清华PyPI镜像地址,这不是可有可无的优化。默认的PyPI源部署在国外,国内网络下载一个大一点的依赖包经常卡到超时,几十个依赖轮着超时,装到天荒地老。清华、阿里、豆瓣都有PyPI镜像,速度基本能跑到带宽上限。如果你在公司网络里,建议换成公司自建的私有源,脚本里只需要改一个字符串。

如果你不想每次pip命令都带-i参数,可以执行一次全局配置:

pip config set global.index-url https://pypi.tuna.tsinghua.edu.cn/simple

配置写进用户目录,之后所有pip命令默认走镜像。这个操作建议写进一键脚本的末尾,省得每次手动输入。

4. 脚本执行流程与验证

4.1 一次实际执行过程记录

我在一台全新的Windows 11虚机上完整跑了一遍这个脚本,整体耗时大约4分钟,大头花在下载Python安装包和pip拉取依赖上。执行过程大致是这样的:

  • 步骤1:检测Python,本机没有python命令,脚本自动下载python-3.10.11-amd64.exe。
  • 步骤2:静默安装,等待约40秒左右完成。
  • 步骤3:需要注意,新版Windows下PATH更新要重开终端才生效。脚本里装完Python后继续执行pip时,当前窗口可能仍然找不到python命令,所以我干脆在脚本里加了一步提示,明确告诉用户"重新打开命令行窗口后再执行一次脚本"。如果你想要完全无人值守,可以把后续命令直接改成C:\Python310\python.exe形式。
  • 步骤4:升级pip,从清华源拉取新版pip,速度非常快。
  • 步骤5:安装airtest==1.2.6,pip自动解析并拉取几十个依赖包。
  • 步骤6:安装pocoui。
  • 步骤7:验证import,airtest和pocoui均正常导入。

整个过程最担心的就是numpy版本冲突,所以在脚本验证环节我特意加了一条numpy版本检查,超过1.24就自动降级到1.23.x,避免pocoui的旧接口崩溃。

4.2 安装后的验证命令

单独能装成功不代表能跑起来,import检查是判断安装完整性的最直接方式。airtest、pocoui能不能正常导入,决定你的脚本还能不能往下写。

# 检查airtest版本 python -c "import airtest; print(airtest.__version__)" # 检查pocoui能正常导入,并确认Android驱动存在 python -c "from poco.drivers.android.uiautomation import AndroidUiautomationPoco; print('pocoui ok')"

如果手头有安卓设备或模拟器,还可以跑一个更完整的最小冒烟测试:

from airtest.core.api import connect_device from poco.drivers.android.uiautomation import AndroidUiautomationPoco dev = connect_device("Android:///") poco = AndroidUiautomationPoco(dev) poco("com.example.app").child("btn_start").click()

这段代码干的事很简单:连接安卓设备,初始化Poco驱动,按控件层级找到某个按钮并点击。能跑通这一段,说明数据库连接、控件定位、触控模拟整条链路都正常,环境就算彻底妥了。没有设备时跑这种代码会报连接错误,但只要不是No module named,就说明环境本身没问题。

4.3 离线安装的补充方案

很多公司的测试环境是隔离网,物理上访问不了外网,pip install在线安装根本行不通。替代方案是先在能联网的机器上把所有依赖包拉下来,做成离线包目录,然后拷进内网机器执行离线安装。

# 在一台能联网的机器上拉取依赖包 pip download airtest==1.2.6 -d ./airtest_packages -i https://pypi.tuna.tsinghua.edu.cn/simple pip download pocoui -d ./airtest_packages -i https://pypi.tuna.tsinghua.edu.cn/simple # 在内网机器上安装,--no-index表示强制不走互联网 pip install --no-index --find-links=./airtest_packages airtest==1.2.6 pip install --no-index --find-links=./airtest_packages pocoui

airtest连同依赖大概150MB左右,用U盘拷进去完全可行。离线安装的逻辑也可以写进一键脚本,只需要把安装源和pip参数换成离线形态,其他流程完全一致。

5. 常见问题与排查技巧

装环境遇到的问题,翻来覆去其实就那么几类,我这几年踩下来的经验基本都能对号入座。

5.1 常见问题速查表

现象原因解决方法
python不是内部或外部命令Python未加入PATH,或安装时未勾选PrependPath重新安装并勾选Add to PATH;或手动把C:\Python310加入系统环境变量
pip版本过旧导致部分依赖解析失败全新Python自带的pip版本太老先执行python -m pip install --upgrade pip
下载速度极慢或频繁超时默认走PyPI国外源加-i参数指定清华/阿里/豆瓣镜像
安装时报Microsoft Visual C++ 14.0 is required个别依赖包需要VC++编译工具安装Visual C++ Build Tools,或改装带wheel的依赖版本
导入airtest报No module named 'cv2'opencv-python依赖缺失或版本冲突重新执行pip install opencv-python --upgrade
pocoui导入报AttributeError: module 'numpy' has no attribute 'float'numpy版本过高,旧版pocoui使用已移除的别名降低numpy版本到1.23.x,例如pip install numpy==1.23.5
连接安卓设备但airtest识别不到adb驱动或设备授权问题在设备上确认USB调试授权,执行adb kill-server再adb start-server

最值得单独拎出来说的是numpy版本问题。pocoui在1.0.x时代用的是numpy旧接口,如果环境里不锁版本,pip会拉到最新版numpy,而新版numpy直接移除了np.float、np.int这类别名,一import就崩。处理办法就是脚本里加一条自动降级逻辑,检查到numpy大于1.24就装回1.23.x。

5.2 一些不太会写进文档的实操心得

第一,Windows下别用应用商店版的Python。商店版Python把解释器包在UWP容器里,文件路径很别扭,部分包安装权限受限。老老实实用python.org的安装包,最省心。

第二,团队成员之间一定要统一pip源。一个人用清华源、一个人用默认PyPI、还有一个人用公司私有源,看起来只是速度差别,实际会因为源里同步时间差异导致装到不完全一样的依赖版本。统一源地址,很多莫名其妙的"我这边能跑你那边跑不了"的问题会自然消失。

第三,脚本跑完顺手执行一次pip freeze导出版本快照,下一步在另一台机器上恢复环境:

pip freeze > requirements.txt

一键安装脚本负责从零搭建,requirements.txt负责版本锁定。两个配合使用,比单靠一个脚本更可靠,也为以后环境出问题时的回溯留了依据。

第四,不要把一键脚本当成万能药。它解决的是"安装和基础配置"这一层重复劳动,但真正写自动化脚本时,设备和应用的差异一定还会带来各种新问题,这时候灵活的排错能力比环境装得快更重要。

6. 项目扩展方向

做完一键安装脚本之后,我建议顺手把这个思路扩成一套更完整的初始化工具集。比如在脚本里追加adb platform-tools的下载和PATH配置,这样连安卓设备时不会再遇到adb not found;再比如自动创建Python虚拟环境,把airtest装进venv而不是全局环境,避免污染系统级Python;还可以把IDE插件地址、示例脚本目录、以及团队内部的公共库一起初始化到位。一台新机器跑完脚本,不光环境就位,连工作目录和组织规范都一起备好,这种体验才是自动化部署该有的样子。

本文还有配套的精品资源,点击获取

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/9/9 18:00:56

基于Matlab+Cplex的激励型需求响应负荷转移优化建模与求解

做负荷优化调度的人,对“激励型需求响应”这个名字肯定不陌生。最近我在负责一个区域微电网的负荷转移项目,用matlab搭建优化模型,调用cplex求解器求解,把激励型需求响应的完整链路跑通了。这篇文章就把我的建模思路、代码实现、求…

作者头像 李华
网站建设 2026/9/9 18:00:29

做ai网站选哪家好,2026想少走弯路就看过来啦!

做ai网站选哪家好,2026想少走弯路就看过来啦! 中国信通院《2026年中小微企业数字化应用白皮书》里有个挺直的白话:教育文化、文创、外贸类小微商家里,超半数把“建站、改图、收单、发朋友圈”分散在五六个工具里,每月为…

作者头像 李华
网站建设 2026/9/9 17:55:43

GESP C++二级数学专项训练·超详细解析版

这份答案不仅给出了代码,还拆解了‌“数学逻辑”‌(怎么想)和‌“代码实现”‌(怎么写),并标注了‌易错点‌,帮助孩子彻底吃透每一道题。 第一部分:基础算术与数位处理 核心考点‌…

作者头像 李华
网站建设 2026/9/9 17:51:52

老Mac跑新macOS:OpenCore Legacy Patcher

老Mac跑新macOS:OpenCore Legacy Patcher 【免费下载链接】OpenCore-Legacy-Patcher Experience macOS just like before 项目地址: https://gitcode.com/GitHub_Trending/op/OpenCore-Legacy-Patcher 打开软件更新,弹窗写着"此 Mac 不再受支…

作者头像 李华
网站建设 2026/9/9 17:51:10

InsightFace 人脸检测与 1:1 比对实战:5 分钟跑通本地人脸分析

InsightFace 人脸检测与 1:1 比对实战:5 分钟跑通本地人脸分析 【免费下载链接】insightface State-of-the-art 2D and 3D Face Analysis Project 项目地址: https://gitcode.com/GitHub_Trending/in/insightface InsightFace 是一个开源的 2D/3D 人脸分析项…

作者头像 李华