资讯动态

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

发布时间:2026/9/9 18:01:06 来源:尧图企业网站定制
简介面向尚无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不漂移、出了问题也能稳定复现。实际使用中我一般锁定当前比较稳定的版本号比如airtest1.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 2nul 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 InstallAllUsers1 TargetDirC:\Python310 PrependPath1 Include_test0 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 airtest1.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安装参数里PrependPath1很关键少了它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 PYTHONpython3 echo [INFO] 检测到 Python: $($PYTHON --version 21) 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 airtest1.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安装airtest1.2.6pip自动解析并拉取几十个依赖包。步骤6安装pocoui。步骤7验证importairtest和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 airtest1.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 airtest1.2.6 pip install --no-index --find-links./airtest_packages pocouiairtest连同依赖大概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 cv2opencv-python依赖缺失或版本冲突重新执行pip install opencv-python --upgradepocoui导入报AttributeError: module numpy has no attribute floatnumpy版本过高旧版pocoui使用已移除的别名降低numpy版本到1.23.x例如pip install numpy1.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插件地址、示例脚本目录、以及团队内部的公共库一起初始化到位。一台新机器跑完脚本不光环境就位连工作目录和组织规范都一起备好这种体验才是自动化部署该有的样子。本文还有配套的精品资源点击获取

读完文章,也想定制专属网站?

尧图设计师 24 小时内与您沟通定制方案

免费获取报价