使用WebdriverIO进行Android、iOS原生应用自动化测试的文档及示例咨询
WebdriverIO 原生移动端(Android/iOS)自动化测试配置与实现指南
前置环境准备
- 通用依赖:Node.js 版本 >= 16,已初始化好现有的WebdriverIO项目
- Android 端专属依赖:
- 安装JDK 11及以上版本,配置好JAVA_HOME环境变量
- 安装Android SDK,配置ANDROID_HOME环境变量,包含platform-tools、build-tools、emulator组件
- 准备测试用的Android apk安装包,开启测试设备/模拟器的USB调试权限
- iOS 端专属依赖(仅 macOS 支持):
- 安装最新稳定版Xcode,配置好Xcode命令行工具
- 安装CocoaPods依赖管理工具
- 准备测试用的iOS app安装包(模拟器用.app文件,真机用.ipa文件且完成测试签名)
- 开启iOS设备/模拟器的开发者模式
WebdriverIO 项目配置修改
安装移动端驱动依赖
执行以下命令安装对应依赖:
# 安装Appium驱动,WebdriverIO通过Appium实现移动端交互 npm install @wdio/appium-service --save-dev # 安装Android UIAutomator2驱动(用于Android原生应用测试) npm install appium-uiautomator2-driver --save-dev # 安装iOS XCUITest驱动(用于iOS原生应用测试) npm install appium-xcuitest-driver --save-dev
调整wdio.conf.js配置文件
修改配置文件中的核心参数:
export const config = { // 启用Appium服务 services: ['appium'], // Appium服务配置 appium: { // 自动下载缺失的驱动 args: { allowInsecure: ['chromedriver_autodownload'] } }, // 通用capabilities配置示例,可按平台拆分配置文件单独管理 capabilities: [ // Android测试配置 { platformName: 'Android', 'appium:automationName': 'UIAutomator2', // 替换为你的apk文件绝对路径 'appium:app': './path/to/your/test.apk', // 替换为你的测试设备序列号,可通过adb devices查看 'appium:deviceName': 'emulator-5554', // 可选:设置app包名、启动页Activity,加快测试启动速度 'appium:appPackage': 'com.your.app.package', 'appium:appActivity': 'com.your.app.LaunchActivity' }, // iOS测试配置 { platformName: 'iOS', 'appium:automationName': 'XCUITest', // 替换为你的app文件绝对路径 'appium:app': './path/to/your/test.app', // 替换为你的测试设备UDID,可通过xcrun xctrace list devices查看 'appium:udid': '00001111-000A1234B0123001C', // 真机测试需要额外添加teamId配置 // 'appium:xcodeOrgId': '你的开发团队ID', // 'appium:xcodeSigningId': 'iPhone Developer' } ], // 其他原有WebdriverIO配置保持即可,比如测试用例路径、报告配置等 }
原生应用测试用例编写
原有WebdriverIO的元素选择、操作API基本可以复用,仅需要替换为移动端原生元素的定位方式:
describe('原生应用测试示例', () => { it('验证登录流程正常', async () => { // 通过 accessibility id 定位元素(推荐,跨平台通用性高) const usernameInput = await $('~username_input') const passwordInput = await $('~password_input') const loginButton = await $('~login_btn') await usernameInput.setValue('test_user') await passwordInput.setValue('test_pass') await loginButton.click() // 验证登录成功后的页面元素存在 const homeBanner = await $('~home_banner') await expect(homeBanner).toBeExisting() }) })
注:移动端元素的id、accessibility id可以通过Appium Inspector工具查看获取。
测试执行
直接使用原有WebdriverIO的测试启动命令即可:
npx wdio run wdio.conf.js
如果需要单独运行Android或iOS测试,可以拆分配置文件为wdio.android.conf.js和wdio.ios.conf.js,运行时指定对应配置文件即可。
常见问题排查
- Android设备连接失败:优先检查adb devices是否能识别到设备,USB调试权限是否开启,包名和Activity配置是否正确
- iOS启动失败:优先检查Xcode命令行工具是否配置正确,测试包是否和设备架构匹配,真机测试确认签名配置无误
- 元素定位失败:优先用Appium Inspector确认元素定位符是否正确,添加合理的显式等待时间处理页面加载延迟
内容的提问来源于stack exchange,提问作者Prakash Gupta
相关产品推荐
相关产品推荐

