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工具中,实现自动触发执行。