当前位置: 首页 > 测试知识 > App自动化测试:Appium环境搭建与实战
App自动化测试:Appium环境搭建与实战
2026-09-28 作者:cwb 浏览次数:210

Appium是一个开源的移动应用自动化测试框架,支持Android、iOS和Windows应用。基于WebDriver协议,可以用Python、Java、JavaScript等语言编写测试脚本。


一、环境准备

Appium依赖Node.js运行,同时需要JDK以及对应平台的SDK。


1.安装 Node.js

Appium服务器基于Node.js,建议安装 LTS 版本。

Windows:从Node.js官网下载安装包,按向导安装。

macOS:推荐使用 Homebrew,执行brew install node。

Linux:Ubuntu/Debian 可执行sudo apt install nodejs npm。


安装完成后验证:

bash

node --version

npm --version


2.安装 JDK

许多 Appium 客户端库依赖 Java 环境,建议安装 JDK 8 或更高版本。

Windows:从Oracle或Adoptium下载JDK,安装后设置JAVA_HOME。

macOS:执行brew install openjdk,然后配置PATH。

Linux:执行 sudo apt install openjdk-17-jdk。


验证:

bash

java -version


3.安装 Android SDK

如果测试Android应用,需要安装Android SDK,可以通过Android Studio或独立SDK命令行工具完成。


安装后设置环境变量:

bash

# macOS / Linux,添加到 ~/.bash_profile 或 ~/.zshrc

export ANDROID_HOME=$HOME/Library/Android/sdk

export PATH=$PATH:$ANDROID_HOME/tools

export PATH=$PATH:$ANDROID_HOME/platform-tools


cmd

:: Windows

ANDROID_HOME = C:\Users\你的用户名\AppData\Local\Android\Sdk

Path中追加 %ANDROID_HOME%\tools 和 %ANDROID_HOME%\platform-tools


设置完成后运行:

bash

adb devices


能正常列出设备即可。


4.安装 Xcode

iOS 测试必须在 macOS 上进行,需要从App Store安装Xcode,并安装Command Line Tools。

二、安装Appium和驱动


1.全局安装 Appium

bash

npm install -g appium


验证:

bash

appium --version


2.安装平台驱动

Appium 3.x 不再内置驱动,需要按平台安装。


Android 驱动:

bash

appium driver install uiautomator2


iOS 驱动,仅 macOS:

bash

appium driver install xcuitest


Windows 应用驱动:

bash

appium driver install windows


查看已安装驱动:

bash

appium driver list --installed


3.环境检查

安装appium-doctor:

bash

npm install -g appium-doctor


检查 Android:

bash

appium-doctor --android


检查 iOS:

bash

appium-doctor --ios


根据提示修复缺失项。


三、实战测试脚本

以Python为例,启动Android应用并执行基本操作。


1.安装 Python 客户端

bash

pip install Appium-Python-Client selenium


2.编写测试脚本

创建 test_demo.py:


python

from appium import webdriver

from appium.options.common import AppiumOptions

from appium.webdriver.common.appiumby import AppiumBy


capabilities = {

    "platformName": "Android",

    "appium:automationName": "UiAutomator2",

    "appium:deviceName": "Android Emulator",

    "appium:appPackage": "com.example.app",

    "appium:appActivity": ".MainActivity",

    "appium:noReset": True

}


options = AppiumOptions().load_capabilities(capabilities)

driver = webdriver.Remote("http://localhost:4723", options=options)


try:

    btn = driver.find_element(AppiumBy.ID, "com.example.app:id/button")

    btn.click()

    print("按钮点击成功")

except Exception as e:

    print(f"操作失败: {e}")

finally:

    driver.quit()


常用Capabilities说明:

platformName:目标平台,例如 Android 或 iOS。

appium:automationName:Android 用 UiAutomator2,iOS 用 XCUITest。

appium:deviceName:设备名称,可以是模拟器或真机。

appium:appPackage:Android 应用包名。

appium:appActivity:Android 启动 Activity。

appium:noReset:True 表示不重置应用状态。


3.启动并运行

终端1启动Appium服务器:

bash

appium


默认监听地址为 http://localhost:4723。


终端 2 确保设备或模拟器已连接,然后运行:

bash

python test_demo.py


四、元素定位法

Appium 支持多种定位方法。

ID 定位:driver.find_element(AppiumBy.ID, "com.app:id/btn")。适合 Android resource-id 或 iOS accessibility id。

XPath 定位:driver.find_element(AppiumBy.XPATH, "//*[@text='登录']")。灵活,但性能较差。

Accessibility ID:driver.find_element(AppiumBy.ACCESSIBILITY_ID, "submit")。跨平台兼容性较好。

Class Name:driver.find_element(AppiumBy.CLASS_NAME, "android.widget.Button")。按控件类型定位。

建议优先使用 ID 和 Accessibility ID,稳定性和速度通常优于 XPath。


五、常见问题

Q:appium-doctor 提示 ANDROID_HOME 未设置。

A:检查环境变量是否正确配置。Windows 设置后重启命令行。macOS/Linux 确认 export 已写入 ~/.bash_profile 或 ~/.zshrc,并执行 source 生效。


Q:会话启动失败,报 SessionNotCreatedException。

A:常见原因是 Capabilities 不完整、设备未连接、驱动版本不匹配。先运行 adb devices 确认设备识别,再检查 automationName 是否与驱动一致。


Q:连接 Appium 服务器被拒绝。

A:确认 Appium 服务器已启动,脚本中的 URL 与服务器地址一致。默认端口是 4723。


Q:Chrome 版本不匹配。

A:测试移动端 Chrome 时,ChromeDriver 版本必须与手机 Chrome 版本匹配。在手机 Chrome 设置中查看版本,再下载对应 ChromeDriver。


Q:UiAutomator2 Instrumentation 进程崩溃。

A:通常是残留会话或端口冲突。杀掉 Appium 进程,执行:

bash

adb kill-server

adb start-server


然后重新启动 Appium。


注意版本兼容性。Appium服务器、客户端库、驱动版本要相互兼容。

Python项目建议使用venv隔离依赖。

实际项目建议使用Page Object Model组织代码,并配合pytest或unittest管理用例。

可以集成到Jenkins、GitHub Actions等CI/CD工具中,实现自动触发执行。


文章标签: app测试 移动app测试 自动化测试 测试工具 软件测试
咨询软件测试