You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

使用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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.26 03:36:01