Appium 是一个开源的移动端自动化测试框架,支持 Android 和 iOS 原生、混合和 Web 应用测试。它基于 Selenium WebDriver 协议扩展,可以使用多种编程语言(Python、Java、JavaScript 等)编写测试脚本。
1. Appium 环境搭建
(1) 安装 Node.js
Appium 是基于 Node.js 开发的,需要先安装 Node.js:
官网下载:Node.js 官网
安装后验证:
node -v npm -v
(2) 安装 Appium
方式 1:通过 npm 安装(推荐)
npm install -g appium
安装完成后,运行:
appium -v # 查看版本
方式 2:安装 Appium Desktop(GUI 版本)
下载地址:Appium Desktop
适合新手可视化操作,但运行效率较低。
(3) 安装 Appium 客户端库
根据你的编程语言选择对应的客户端库:
Python:
pip install Appium-Python-Client
Java:
<dependency> <groupId>io.appium</groupId> <artifactId>java-client</artifactId> <version>8.3.0</version> </dependency>
运行 HTML
(4) 安装移动端依赖
Android 环境
安装 Android Studio(含 SDK):
配置
ANDROID_HOME
环境变量:export ANDROID_HOME=/Users/yourname/Library/Android/sdk export PATH=$PATH:$ANDROID_HOME/platform-tools export PATH=$PATH:$ANDROID_HOME/tools
安装 adb(Android Debug Bridge):
adb devices # 查看连接的设备
安装 uiautomator2(Android UI 自动化引擎):
npm install -g appium-uiautomator2-driver
iOS 环境(需 Mac)
安装 Xcode(App Store 下载)
安装 Carthage(依赖管理工具):
brew install carthage
安装 WebDriverAgent:
npm install -g appium-webdriveragent
2. 第一个 Appium 测试脚本
Python 示例(Android 测试)
from appium import webdriver
from appium.webdriver.common.appiumby import AppiumBy
# Appium 服务器地址
APPIUM_SERVER = 'http://127.0.0.1:4723'
# 设备配置
desired_caps = {
'platformName': 'Android', # 平台(Android/iOS)
'deviceName': 'Pixel_4', # 设备名称(adb devices 查看)
'appPackage': 'com.android.calculator2', # 被测 App 包名
'appActivity': '.Calculator', # 启动 Activity
'automationName': 'UiAutomator2', # Android 自动化引擎
}
# 连接 Appium 服务器
driver = webdriver.Remote(APPIUM_SERVER, desired_caps)
# 定位计算器按钮并点击
driver.find_element(AppiumBy.ID, 'com.android.calculator2:id/digit_5').click()
driver.find_element(AppiumBy.ID, 'com.android.calculator2:id/op_add').click()
driver.find_element(AppiumBy.ID, 'com.android.calculator2:id/digit_3').click()
driver.find_element(AppiumBy.ID, 'com.android.calculator2:id/eq').click()
# 获取计算结果
result = driver.find_element(AppiumBy.ID, 'com.android.calculator2:id/result').text
print("计算结果:", result)
# 关闭会话
driver.quit()
Java 示例(iOS 测试)
import io.appium.java_client.ios.IOSDriver;
import org.openqa.selenium.remote.DesiredCapabilities;
import java.net.URL;
public class FirstAppiumTest {
public static void main(String[] args) throws Exception {
DesiredCapabilities caps = new DesiredCapabilities();
caps.setCapability("platformName", "iOS");
caps.setCapability("deviceName", "iPhone 13");
caps.setCapability("app", "/path/to/your/app.app");
caps.setCapability("automationName", "XCUITest");
IOSDriver driver = new IOSDriver(new URL("http://127.0.0.1:4723"), caps);
// 测试操作...
driver.findElement(AppiumBy.accessibilityId("LoginButton")).click();
driver.quit();
}
}
3. Appium 核心概念
(1) Desired Capabilities
用于配置设备信息和 App 信息,常见参数:
参数 | 说明 |
---|---|
platformName |
Android / iOS |
deviceName |
设备名称(adb devices 查看) |
appPackage |
Android App 包名 |
appActivity |
Android 启动 Activity |
app |
iOS/Android App 安装包路径 |
automationName |
UiAutomator2 (Android) / XCUITest (iOS) |
(2) 元素定位方式
Android:
AppiumBy.ID
(resource-id
)AppiumBy.ACCESSIBILITY_ID
(content-desc
)AppiumBy.XPATH
iOS:
AppiumBy.ACCESSIBILITY_ID
(推荐)AppiumBy.XPATH
(3) 常用操作
click()
:点击元素send_keys("text")
:输入文本swipe()
:滑动屏幕back()
:返回键press_keycode(4)
(Android 按键码)
4. Appium 进阶
(1) 使用 Appium Inspector
类似 Selenium IDE,用于查看 App 元素:
连接设备后,输入
Desired Capabilities
进行元素定位。
(2) 并行测试(Appium Grid)
# 多设备配置
devices = [
{'deviceName': 'Pixel_4', 'udid': 'emulator-5554'},
{'deviceName': 'iPhone_13', 'udid': 'A1B2C3D4'}
]
for device in devices:
driver = webdriver.Remote(APPIUM_SERVER, device)
# 测试逻辑...
(3) 结合 Pytest 框架
import pytest
@pytest.fixture
def appium_driver():
driver = webdriver.Remote(APPIUM_SERVER, desired_caps)
yield driver
driver.quit()
def test_calculator(appium_driver):
appium_driver.find_element(AppiumBy.ID, 'digit_1').click()
assert appium_driver.find_element(AppiumBy.ID, 'result').text == "1"
5. 学习资源
官方文档:Appium Docs
书籍:
《移动App测试实战》
《Appium 自动化测试实战》
在线课程:
Udemy: "Appium Mobile Automation Testing"
B站/YouTube 搜索 "Appium 教程"
总结
安装 Node.js + Appium
配置 Android/iOS 环境
编写
Desired Capabilities
使用
AppiumBy
定位元素结合 Pytest/TestNG 管理测试
现在你可以开始自动化测试 Android 和 iOS 应用了!