APP自动化测试环境搭建(Appium+Python+Jenkins 一站式教程)
-
- 前言
- [一、 环境搭建整体规划](#一、 环境搭建整体规划)
- [二 、基础软件安装与配置(Windows系统)](#二 、基础软件安装与配置(Windows系统))
-
- [2.1 JDK 17.0.10 安装(Android SDK依赖JDK运行)](#2.1 JDK 17.0.10 安装(Android SDK依赖JDK运行))
- [2.2 Python 3.11.9 安装(编写脚本)](#2.2 Python 3.11.9 安装(编写脚本))
- [2.3 Node.js 20.20.0 安装(Appium依赖)](#2.3 Node.js 20.20.0 安装(Appium依赖))
- [2.4 Android SDK 安装与配置(提供adb工具)](#2.4 Android SDK 安装与配置(提供adb工具))
- [三、Appium 核心工具安装与配置](#三、Appium 核心工具安装与配置)
-
- [3.1 旧版Appium Desktop与新版Appium Server核心区别](#3.1 旧版Appium Desktop与新版Appium Server核心区别)
- [3.2 Appium Server 安装(2.x+版本)](#3.2 Appium Server 安装(2.x+版本))
- [3.2 Appium Python Client 安装](#3.2 Appium Python Client 安装)
- 四、设备连接配置(模拟器/真实设备)
-
- [4.1 模拟器配置](#4.1 模拟器配置)
- [4.2 真实设备配置](#4.2 真实设备配置)
- 五、APP元素定位工具选型、安装
- 六、自动化脚本编写与本地验证
-
- [6.1 编写脚本](#6.1 编写脚本)
- [6.2 本地运行验证](#6.2 本地运行验证)
- [七、Jenkins 安装与配置](#七、Jenkins 安装与配置)
-
- [7.1 Jenkins 安装](#7.1 Jenkins 安装)
- [7.2 Jenkins 初始化配置](#7.2 Jenkins 初始化配置)
- [7.3 Jenkins 环境变量配置(关联Python/Appium)](#7.3 Jenkins 环境变量配置(关联Python/Appium))
- [7.4 Jenkins创建自动化任务(自由风格任务)](#7.4 Jenkins创建自动化任务(自由风格任务))
- [7.5 运行任务并查看结果](#7.5 运行任务并查看结果)
- 八、常见问题排查
- 总结
前言
在移动互联网产品迭代速度越来越快的今天,APP自动化测试已经成为保障产品质量、提升测试效率的核心手段。其中,Appium+Python+Jenkins 的组合凭借其跨平台兼容性(支持Android/iOS)、脚本编写简洁性、持续集成易落地性,成为了行业内主流的APP自动化测试解决方案。
本文基于 JDK 17.0.10 和 Python 3.11.9 版本适配,提供一份详细、可落地的一站式环境搭建教程,从基础软件安装到最终持续集成跑通,全程步骤清晰、备注关键版本兼容要点,新手也能跟着一步步完成搭建,避免踩坑。
一、 环境搭建整体规划
在开始具体操作前,先明确整个环境的核心组成和依赖关系,避免搭建过程中出现遗漏或版本冲突:
-
基础运行环境:JDK 17.0.10(Appium 2.x+ 稳定依赖)、Python 3.11.9(自动化脚本编写,兼容最新Appium客户端)、Node.js 20.20.0(Appium服务运行依赖)
-
移动设备支撑:Android SDK(安卓设备/模拟器驱动管理)、安卓模拟器/真实设备
-
核心自动化工具:Appium Server(自动化服务端,推荐2.x+版本)、Appium Python Client(Python客户端依赖,适配Python 3.11)
-
持续集成工具:Jenkins(任务调度、自动触发运行、结果可视化)
-
验证环节:编写简单Python自动化脚本,本地调试通过后,配置Jenkins实现持续集成运行
二 、基础软件安装与配置(Windows系统)
提示:所有软件安装路径禁止包含中文、空格及特殊字符,否则会导致后续工具运行报错(如Appium启动失败、SDK识别异常、Jenkins任务执行失败等)。
2.1 JDK 17.0.10 安装(Android SDK依赖JDK运行)
Appium 2.x+ 版本对JDK 11+ 支持更稳定,本文选用 JDK 17.0.10(长期支持版本,兼容性强,同时适配后续Jenkins运行需求)。需注意:JDK 17 已移除JRE目录,环境变量配置与JDK 8略有差异。
前往官方渠道下载对应系统的JDK 17.0.10安装包,选择与系统位数匹配的版本(64位为主):
-
Oracle JDK 17.0.10(需注册账号,商业使用需授权):https://www.oracle.com/java/technologies/downloads/archive/(搜索JDK 17.0.10)
-
OpenJDK 17.0.10(免费无门槛,推荐):https://adoptium.net/temurin/releases/?version=17(选择17.0.10版本,对应系统安装包)
2.2 Python 3.11.9 安装(编写脚本)
参考我另一篇文章:python安装教程
选用 Python 3.11.9 版本(稳定版,兼容最新版Appium Python Client,同时避免3.12+版本可能存在的依赖包适配问题)。
2.3 Node.js 20.20.0 安装(Appium依赖)
参考我另一篇文章:Node.js 安装教程
Appium基于Node.js开发,需安装Node.js环境才能启动Appium Server,推荐版本为Node.js v20.x LTS稳定版,兼顾安全性、兼容性和长期可用性
2.4 Android SDK 安装与配置(提供adb工具)
参考我另一篇文章:Android SDK 版本选择、下载、安装
Android SDK用于管理安卓设备驱动、模拟器镜像,无需安装完整Android Studio,单独安装SDK Tools即可,适配Python 3.11.9和后续Appium设备连接需求。
三、Appium 核心工具安装与配置
3.1 旧版Appium Desktop与新版Appium Server核心区别
(1)形态与安装方式:旧版Appium Desktop是带图形界面(GUI)的独立安装包,集成了Appium Server、元素定位工具(Inspector),无需命令行操作;新版Appium已彻底移除独立GUI安装包,仅提供命令行版本(需通过npm安装),元素定位需单独安装Appium Inspector工具。
(2)Node.js依赖处理:旧版Appium Desktop会在安装包内部捆绑对应版本的Node.js,无需用户手动安装和配置,本质是"内置封装"而非"脱离依赖",启动时自动调用内置Node.js运行Server;新版Appium需依赖系统全局安装的Node.js,通过npm命令安装和启动,无内置Node.js模块。
(3)功能与扩展性:旧版功能集成度高,适合新手可视化操作,但版本迭代停滞(最后稳定版为1.22.x),对高版本JDK、新安卓系统(Android 12+)和Python 3.11+适配性差;新版Appium 2.x+支持驱动模块化管理(如按需安装uiautomator2、XCUITest驱动),兼容JDK 11+和Python 3.8+,迭代活跃且支持更多新特性,更适合企业级自动化和持续集成场景。
(4)维护与生态:Appium官方已停止对Desktop版本的更新维护,后续仅优化命令行版本;新版依托npm生态,可通过命令快速升级、安装插件,适配Jenkins等持续集成工具更顺畅。
3.2 Appium Server 安装(2.x+版本)
Appium 2.x+ 版本支持命令行启动,同时兼容JDK 17.0.10和Python 3.11.9,安装步骤如下:
(1)打开cmd命令行,执行npm安装命令:npm install -g appium(默认全局安装最新版Appium,也可以指定版本安装);

(2)安装驱动(Android驱动uiautomator2):appium driver install uiautomator2;

(3)验证安装:输入 appium -v 显示2.x+版本号,输入 appium driver list 能看到uiautomator2驱动,则安装成功。

3.2 Appium Python Client 安装
安装适配Python 3.11.9的客户端依赖,用于编写Python自动化脚本与Appium Server通信:
(1)打开cmd命令行,执行pip安装命令:pip install appium-python-client(自动安装适配Python 3.11的最新版本,或者指定版本);
(2)验证安装:输入 pip list,若能看到「appium-python-client」条目,则安装成功。

四、设备连接配置(模拟器/真实设备)
4.1 模拟器配置
-
推荐使用雷电模拟器、夜神模拟器,安装后打开模拟器,在「设置」中开启「开发者选项」,勾选「USB调试」;
-
连接夜神模拟器:启动夜神模拟器,打开电脑cmd命令行,输入命令
adb connect 127.0.0.1:62001(夜神默认端口为62001,其他模拟器端口不同),提示"connected to 127.0.0.1:62001"即为连接成功。 -
连接雷电模拟器:启动雷电模拟器,打开电脑cmd命令行,输入命令
adb connect 127.0.0.1:5555(雷电模拟器默认端口5555),提示"connected to 127.0.0.1:5555"即为连接成功。 -
验证连接:输入命令
adb devices,若列表中显示"127.0.0.1:62001 device",说明模拟器已被adb识别,可正常用于Appium、Android Studio测试。
4.2 真实设备配置
(1)USB连接
-
安卓设备开启「开发者选项」(连续点击系统版本号5次),勾选「USB调试」,连接电脑(选择「传输文件」模式);
不同手机l操作略有不同 -
若设备未被识别,安装对应品牌USB驱动(或通过Android SDK中的USB驱动自动适配);
-
执行
adb devices,显示设备ID(如「XXXXXXXXXXXX」),则真实设备连接成功。
(2)无线连接
- 同一WIFI环境下
adb connect ip:端口号- 执行
adb devices,显示设备ip:端口号,说明连接成功。
五、APP元素定位工具选型、安装
建议使用Appium Inspector
| 工具名称 | 定位类型 | 核心优点 | 核心缺点 | 适配技术栈 | 适用场景 |
|---|---|---|---|---|---|
| Appium Inspector | 原生APP(Android/iOS) | 功能全面、代码生成、实时调试、跨平台 | 需启动Appium Server、配置复杂、资源占用较高 | Appium框架 | 企业级项目、跨平台测试、高定位精度需求 |
| WEditor | Android原生APP | 安装便捷、轻量高速、适配uiautomator2、操作简单 | 仅支持Android、与Appium环境冲突 | Python + uiautomator2 | 小型项目、快速调试、Android专属测试 |
| UC-DevTools | WebView/H5页面 | 国内网络稳定、WebView适配强、网络调试能力 | 不支持原生控件定位、仅适配混合APP | 所有混合APP(原生+WebView) | 国内环境、H5页面调试、网络问题排查 |
| Chrome Inspect | WebView/H5页面 | 原生集成、功能强大、社区资源丰富 | 需翻墙、国内网络兼容性差 | Chrome内核WebView | 外网环境、深度Web调试、熟悉Chrome操作的用户 |
| ADB命令行 | Android原生APP | 无GUI依赖、应急高效、灵活可控、无需额外安装 | 无图形化、操作繁琐、无实时调试 | 所有Android自动化框架 | 应急定位、服务器环境、脚本动态定位 |
六、自动化脚本编写与本地验证
编写简单的Python自动化脚本,验证Appium与设备的连接,以及脚本运行效果(以打开设备自带计算器APP为例)。
6.1 编写脚本
创建test_calc.py文件,内容如下(需根据设备型号、APP包名调整):
python
# 导入Appium客户端依赖
from appium import webdriver
from appium.webdriver.common.appiumby import AppiumBy
import time
# 设备与APP配置信息
desired_caps = {
"platformName": "Android", # 系统类型
"platformVersion": "13", # 设备系统版本(模拟器/真实设备版本)
"deviceName": "emulator-5554", # 设备ID(通过adb devices获取)
"appPackage": "com.android.calculator2", # 计算器APP包名
"appActivity": ".Calculator", # 计算器APP启动页
"noReset": True, # 不重置APP状态
"automationName": "UiAutomator2" # 自动化引擎(对应安装的uiautomator2驱动)
}
# 连接Appium Server,启动APP
driver = webdriver.Remote("http://127.0.0.1:4723/wd/hub", desired_caps)
print("APP启动成功")
# 简单操作:点击数字1
driver.find_element(AppiumBy.ID, "com.android.calculator2:id/digit_1").click()
time.sleep(2)
# 关闭APP,退出驱动
driver.quit()
print("脚本运行完成")
6.2 本地运行验证
-
打开cmd命令行,启动Appium Server:
appium(默认端口4723,启动成功后显示「Appium REST http interface listener started on 0.0.0.0:4723」); -
打开新的cmd窗口,切换至脚本所在目录,执行命令:
python test_calc.py; -
观察设备:模拟器/真实设备自动打开计算器APP,点击数字1,随后关闭APP,命令行显示「脚本运行完成」,则本地验证成功。
七、Jenkins 安装与配置
7.1 Jenkins 安装
-
下载Jenkins安装包:https://www.jenkins.io/download/,选择Windows系统的「LTS」稳定版(长期支持版本);
-
双击安装包,默认下一步,建议自定义安装路径(例:
D:\Develop\Jenkins),安装过程中会自动关联本地JDK 17.0.10环境; -
安装完成后,Jenkins会自动启动,默认端口为8080,访问
http://localhost:8080进入初始化页面。
7.2 Jenkins 初始化配置
-
根据页面提示,从Jenkins安装目录的「secrets\initialAdminPassword」文件中获取初始密码,输入后进入插件安装页面;
-
选择「安装推荐的插件」,等待插件下载安装完成(需联网,耗时约5-10分钟);
-
创建管理员账号(用户名、密码、邮箱),完成初始化后进入Jenkins主页面。
7.3 Jenkins 环境变量配置(关联Python/Appium)
-
进入Jenkins主页面,点击「系统管理」→「系统配置」;
-
下拉至「全局属性」,勾选「环境变量」,新增以下变量(对应本地安装路径):
-
变量名:
JAVA_HOME,变量值:D:\Develop\Java\jdk-17.0.10 -
变量名:
PYTHON_HOME,变量值:D:\Develop\Python311 -
变量名:
ANDROID_HOME,变量值:D:\Develop\Android\Sdk -
变量名:
Path,变量值:%PYTHON_HOME%;%PYTHON_HOME%\Scripts;%ANDROID_HOME%\platform-tools;%NODE_HOME%\bin(补充本地Node.js路径)
-
-
点击「保存」,完成环境变量关联,确保Jenkins能调用本地Python、Appium、ADB等工具。
7.4 Jenkins创建自动化任务(自由风格任务)
-
Jenkins主页面点击「新建任务」,输入任务名称(如「APP自动化测试任务」),选择「自由风格软件项目」,点击「确定」;
-
进入任务配置页面,在「源码管理」中选择「无」(本地脚本无需源码仓库,若脚本存于Git可配置Git地址);
-
在「构建步骤」中点击「增加构建步骤」,选择「执行Windows批处理命令」,输入命令:
cd D:\Scripts\AppiumTest(脚本所在目录)
python test_calc.py
- 点击「保存」,完成任务创建。
7.5 运行任务并查看结果
-
回到任务页面,点击「立即构建」,Jenkins开始执行任务,可点击「控制台输出」查看运行日志;
-
若日志显示「脚本运行完成」,无报错信息,且设备执行了对应操作,则Jenkins自动化任务运行成功;
-
后续可配置定时构建、触发构建(如代码提交后触发),实现持续集成。
八、常见问题排查
-
Appium启动失败:检查JDK、Node.js版本是否兼容,确保JDK 17.0.10和Node.js v16.x,且环境变量配置正确;
-
设备无法识别(adb devices无设备):检查USB调试是否开启,模拟器端口是否映射,ADB驱动是否安装;
-
Jenkins执行脚本报错「python不是内部命令」:检查Jenkins全局环境变量中PYTHON_HOME和Path是否配置正确,重启Jenkins生效;
-
脚本运行报错「NoSuchElementException」:检查APP包名、启动页是否正确,元素ID是否与设备系统版本匹配。
总结
-
本文基于JDK 17.0.10和Python 3.11.9版本,完成了Appium+Python+Jenkins自动化测试环境的全流程搭建,从基础软件安装、环境变量配置,到脚本编写、Jenkins持续集成,
-
搭建完成后,可基于此环境扩展复杂的自动化脚本(如UI自动化、接口联动自动化),通过Jenkins实现定时执行、结果监控,大幅提升APP测试效率。后续将持续更新 适配iOS设备、集成测试报告插件(如Allure)等,进一步完善自动化测试体系。
后续不定时更新