iOS自动化测试全流程教程(基于WebDriverAgent+go-ios)

iOS自动化测试全流程教程(基于WebDriverAgent+go-ios)

1. 概述

本文介绍iOS自动化测试的完整实现方案,核心通过以下工具链实现跨平台(Windows/macOS)控制iOS设备(支持iOS 17+):

  • WebDriverAgent(WDA):运行在iOS设备上的服务端,负责接收并执行自动化指令(基于Appium开源项目)。
  • go-ios:跨平台工具,用于在Windows/macOS上启动WDA、建立设备通信(替代macOS专属的Xcode依赖)。
  • facebook-wda:WDA的Python客户端库,用于编写自动化脚本控制iOS设备。

2. 环境准备(Windows/macOS通用)

2.1 安装go-ios(核心通信工具)

go-ios是跨平台连接iOS设备的核心工具,支持启动WDA、端口转发等功能。

安装方式(二选一):
  • 通过npm安装(推荐Windows)

    1. 先安装Node.js(含npm包管理器),验证安装:node -vnpm -v
    2. 安装go-ios:npm install -g go-ios
    3. 验证安装:ios --help(若提示"命令未找到",需将npm的bin目录添加到系统环境变量,通常路径为 C:\Users\用户名\AppData\Roaming\npm\bin)。
  • 通过Go安装(推荐macOS)

    1. 先安装Go环境(1.18+版本),验证:go version
    2. 安装go-ios:go install github.com/danielpaulus/go-ios@latest
    3. 为统一Windows/macOS命令,复制可执行文件:cp $GOPATH/bin/go-ios $GOPATH/bin/ios
    4. 验证:ios --help(若提示"命令未找到",需将$GOPATH/bin添加到环境变量)。

2.2 安装iTunes(仅Windows需要)

Windows系统需依赖iTunes的usbmuxd驱动实现iOS设备USB通信:

  1. 下载并安装iTunes(确保安装时勾选"安装驱动程序")。
  2. 验证:连接iOS设备后,iTunes能识别设备即说明驱动正常。

说明 :macOS无需安装iTunes,因Xcode已内置usbmuxd服务。

2.3 安装wintun(仅Windows需要,iOS 17+必备)

iOS 17+启动WDA需依赖wintun隧道组件:

  1. 下载最新版wintun(选择对应系统架构):
    • 64位系统:下载wintun-xxx-amd64.msi,提取wintun.dll
    • 32位系统:下载wintun-xxx-x86.msi,提取wintun.dll
  2. 复制wintun.dll到系统目录:
    • 64位:C:\Windows\System32\
    • 32位:C:\Windows\SysWOW64\

3. WebDriverAgent(WDA)的编译与启动

WDA需在macOS上通过Xcode编译(因依赖iOS开发工具链),支持两种使用方式:直接通过Xcode启动,或生成IPA包后在Windows/macOS手动安装。

3.1 方式一:通过Xcode直接编译启动(推荐macOS用户)

3.1.1 准备WDA源码与配置
  1. 克隆WDA源码:git clone https://github.com/appium/WebDriverAgent.git
  2. 打开项目:双击WebDriverAgent.xcodeproj(需安装Xcode 14+)。
  3. 配置签名(关键步骤):
    • 选中左侧WebDriverAgentRunner目标(红框1),进入Signing & Capabilities标签。
    • 勾选Automatically manage signing,选择Team(可用个人Apple ID登录)。
    • 修改Bundle Identifier(红框2)为唯一值(如com.yourname.WebDriverAgentRunner,避免与其他项目冲突)。
    • WebDriverAgentLib目标重复上述签名配置。

3.1.2 连接设备并启动WDA
  1. 用USB连接iOS设备,在Xcode顶部工具栏选择设备:Product → Destination → 你的设备名称
  2. 选择启动方案:Product → Scheme → WebDriverAgentRunner
  3. 启动WDA:Product → Test(或快捷键⌘+U)。
验证启动成功:
  • 设备上会显示悬浮窗:Automation Running / Hold both volume buttons to stop
  • 在macOS终端验证:ios forward 8100 8100(端口转发),访问http://localhost:8100/status,返回JSON即成功。

3.2 方式二:生成IPA包手动安装(支持Windows跨平台)

若需在Windows上启动WDA,先在macOS上编译生成IPA包,再通过go-ios安装到设备。

3.2.1 用xcodebuild编译IPA包
  1. 配置WDA签名(同3.1.1步骤)。

  2. 终端执行编译命令:

    bash 复制代码
    # 生成测试包(指定输出目录)
    xcodebuild build-for-testing \
      -scheme WebDriverAgentRunner \
      -sdk iphoneos \
      -configuration Release \
      -derivedDataPath /tmp/WDA-build
  3. 生成IPA包:

    bash 复制代码
    # 进入编译输出目录
    cd /tmp/WDA-build/Build/Products/Release-iphoneos
    # 创建Payload文件夹(iOS IPA包标准结构)
    mkdir Payload && mv WebDriverAgentRunner.app Payload/
    # 打包为IPA
    zip -r WDA.ipa Payload
  4. 提取IPA:在/tmp/WDA-build/Build/Products/Release-iphoneos目录找到WDA.ipa,复制到本地。

3.2.2 通过go-ios安装并启动WDA(Windows/macOS通用)
  1. 安装IPA到设备

    bash 复制代码
    ios install --path /path/to/WDA.ipa  # 替换为实际IPA路径
  2. 启动隧道(iOS 17+必需)

    bash 复制代码
    ios tunnel start  # 保持终端运行,隧道需持续生效
  3. 验证设备连接

    bash 复制代码
    ios list  # 显示设备列表即连接正常,若为空:重新插拔设备→在设备上点击"信任"
  4. 启动WDA

    先获取WDA的Bundle ID(通过ios apps命令查看,格式类似com.yourname.WebDriverAgentRunner),再启动:

    bash 复制代码
    ios runwda \
      --bundleid=com.yourname.WebDriverAgentRunner \
      --testrunnerbundleid=com.yourname.WebDriverAgentRunner \
      --xctestconfig=WebDriverAgentRunner.xctest
  5. 端口转发(本地访问WDA)

    bash 复制代码
    ios forward 8100 8100  # 将设备8100端口映射到本地8100,保持终端运行

4. 用facebook-wda控制设备

facebook-wda是WDA的Python客户端,用于编写自动化脚本。

4.1 安装客户端

bash 复制代码
pip3 install -U facebook-wda

4.2 连接WDA并执行基础操作

python 复制代码
import wda

# 连接本地WDA服务(端口转发后默认地址)
c = wda.Client("http://localhost:8100")

# 验证连接
print(c.status())  # 输出设备状态信息

# 基础操作示例
c.screenshot("screenshot.png")  # 截图
c.press("home")  # 按Home键
c.app_start("com.apple.calculator")  # 启动计算器

说明 :更多API参考facebook-wda文档

5. 用Airtest连接WDA控制设备

Airtest是可视化自动化工具,支持通过WDA连接iOS设备:

  1. 安装Airtest:pip install airtest,或下载AirtestIDE
  2. 在AirtestIDE中选择"iOS设备",输入WDA地址:http://localhost:8100
  3. 连接成功后即可通过图形界面录制/编写自动化脚本。

常见问题解决

  1. WDA启动失败(签名错误)

    • 确保设备已开启"开发者模式"(设置→隐私与安全性→开发者模式)。
    • 在设备"设置→通用→VPN与设备管理"中信任开发者证书。
  2. 设备连接不上(ios list为空)

    • Windows:检查iTunes是否识别设备,重新插拔并信任。
    • macOS:通过xcrun instruments -s devices验证设备是否在列表中。
  3. iOS 17+隧道启动失败

    • 检查wintun.dll是否正确放置到系统目录,重启电脑后重试。
相关推荐
liwulin05062 小时前
【PYTHON】python venv创建虚拟环境,非conda
开发语言·python·conda
fengfuyao9852 小时前
基于MATLAB的支持向量机在故障诊断中的应用例程
开发语言·支持向量机·matlab
2501_916008892 小时前
深入理解 iPhone 文件管理,从沙盒结构到开发调试的多工具协同实践
android·ios·小程序·https·uni-app·iphone·webview
顧棟2 小时前
JAVA、SCALA 与尾递归
java·开发语言·scala
码农阿豪2 小时前
解锁京东LOC本地化订单管理新体验:全自动卡密发码核销解决方案
java·开发语言
小尧嵌入式2 小时前
深入理解C/C++指针
java·c语言·开发语言·c++·qt·音视频
蜂蜜黄油呀土豆2 小时前
Go 指针详解:定义、初始化、nil 语义与用例(含 swap 示例与原理分析)
golang·make·指针·new·nil
旧梦吟2 小时前
脚本 生成图片水印
前端·数据库·算法·golang·html5
Blessed_Li2 小时前
Linux系统安装FunASR详细教程
开发语言·funasr