关于 appium
appium 是面向原生及混合 Android、iOS 应用自动化测试开发者的技能,涵盖能力配置、元素定位、设备交互和 CI 执行实践。
主要功能
- 01Android 和 iOS 测试流程
- 02Desired capabilities 示例
- 03元素定位策略
- 04手势与设备交互指南
- 05CI 执行实践
适用场景
- 01自动化测试原生移动应用
- 02测试混合 Android 或 iOS 应用
- 03选择元素定位方式和等待策略
- 04在 CI 中运行移动测试
安装
复制下面的命令,在终端中运行。
$
npx skills add https:/ / github.com/ partme-ai/ full-stack-skills --skill appium安装后在 Claude Code 中输入/appium确认已加载。
附带文件LICENSE.txt
详细介绍
适用场景
当用户希望完成以下任务时,使用此技能:
- 为 Android 和 iOS 原生或混合移动应用编写自动化测试
- 使用 accessibility ID、ID、XPath 或类名定位元素
- 执行手势(点击、滑动、滚动)并处理设备交互
- 为不同设备和平台配置所需能力
- 将 Appium 测试集成到 CI/CD 管道(Jenkins、GitHub Actions)
如何使用此技能
工作流
- 设置环境:安装 Appium Server、驱动程序(Android 使用 UiAutomator2,iOS 使用 XCUITest)和语言绑定
- 定义能力:指定设备名称、平台、应用路径和自动化引擎
- 编写测试脚本:定位元素、执行操作并断言结果
- 在 CI 中运行:通过并行执行和报告,在真实设备或模拟器上运行
1. 所需能力
desired_caps = {
"platformName": "Android",
"deviceName": "Pixel_6",
"app": "/path/to/app.apk",
"automationName": "UiAutomator2",
"noReset": True,
}
2. 测试示例(Python)
from appium import webdriver
from appium.webdriver.common.appiumby import AppiumBy
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC
driver = webdriver.Remote("http://localhost:4723/wd/hub", desired_caps)
wait = WebDriverWait(driver, 10)
# Login flow
username = wait.until(EC.presence_of_element_located((AppiumBy.ACCESSIBILITY_ID, "username")))
username.send_keys("testuser")
driver.find_element(AppiumBy.ACCESSIBILITY_ID, "password").send_keys("secret")
driver.find_element(AppiumBy.ACCESSIBILITY_ID, "login-button").click()
# Assert
welcome = wait.until(EC.presence_of_element_located((AppiumBy.ACCESSIBILITY_ID, "welcome")))
assert welcome.is_displayed()
driver.quit()
3. 测试示例(Java)
DesiredCapabilities caps = new DesiredCapabilities();
caps.setCapability("platformName", "Android");
caps.setCapability("deviceName", "Pixel_6");
caps.setCapability("app", "/path/to/app.apk");
caps.setCapability("automationName", "UiAutomator2");
AndroidDriver driver = new AndroidDriver(new URL("http://localhost:4723/wd/hub"), caps);
WebDriverWait wait = new WebDriverWait(driver, Duration.ofSeconds(10));
driver.findElement(AppiumBy.accessibilityId("username")).sendKeys("testuser");
driver.findElement(AppiumBy.accessibilityId("login-button")).click();
assertTrue(wait.until(ExpectedConditions.visibilityOfElementLocated(AppiumBy.accessibilityId("welcome"))).isDisplayed());
driver.quit();
最佳实践
- 优先使用 accessibility ID 或资源 ID 定位元素;避免脆弱的 XPath 表达式
- 使用显式等待和重试逻辑;失败时捕获屏幕截图和日志
- 使用设备矩阵,在多种设备和 OS 版本上进行测试
- 将敏感信息(应用路径、凭据)存储在环境变量中
- 使用 Appium 内置的手势 API 执行滑动、滚动和长按操作
资源
关键词
appium、移动自动化、Android、iOS、UiAutomator2、XCUITest、accessibility ID、所需能力、跨平台、UI 测试、移动测试
评论
支持 Markdown