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. 提取IPA:在/tmp/WDA-build/Build/Products/Release-iphoneos目录找到WDA.ipa,复制到本地。

生成IPA包:

# 进入编译输出目录cd /tmp/WDA-build/Build/Products/Release-iphoneos # 创建Payload文件夹(iOS IPA包标准结构)mkdir Payload &&mv WebDriverAgentRunner.app Payload/ # 打包为IPAzip -r WDA.ipa Payload 

终端执行编译命令:

# 生成测试包(指定输出目录) xcodebuild build-for-testing \ -scheme WebDriverAgentRunner \ -sdk iphoneos \ -configuration Release \ -derivedDataPath /tmp/WDA-build 
3.2.2 通过go-ios安装并启动WDA(Windows/macOS通用)

端口转发(本地访问WDA)

ios forward 81008100# 将设备8100端口映射到本地8100,保持终端运行

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

ios runwda \ --bundleid=com.yourname.WebDriverAgentRunner \ --testrunnerbundleid=com.yourname.WebDriverAgentRunner \ --xctestconfig=WebDriverAgentRunner.xctest 

验证设备连接

ios list # 显示设备列表即连接正常,若为空:重新插拔设备→在设备上点击“信任”

启动隧道(iOS 17+必需)

ios tunnel start # 保持终端运行,隧道需持续生效

安装IPA到设备

ios install --path /path/to/WDA.ipa # 替换为实际IPA路径

4. 用facebook-wda控制设备

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

4.1 安装客户端

pip3 install -U facebook-wda 

4.2 连接WDA并执行基础操作

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是否正确放置到系统目录,重启电脑后重试。

Read more

llama.cpp 部署 Qwen3-14B-Claude-4.5-Opus-High-Reasoning-Distill-GGUF

模型:Qwen3-14B-Claude-4.5-Opus-High-Reasoning-Distill-GGUF "model": "Qwen3-14B" 显存:21~25GB max-model-len :40960 并发: 4 部署服务器:DGX-Spark-GB10 120GB 生成速率:13 tokens/s (慢的原因分析可见https://blog.ZEEKLOG.net/weixin_69334636/article/details/158497823?spm=1001.2014.3001.5501) 部署GGUF格式的模型有3种方法 对比项Ollamallama.cppLM Studio/OpenWebUI上手难度⭐ 最简单⭐⭐⭐ 需编译⭐ 图形界面推理性能🔶 中等🥇 最强🔶 中等GPU控制有限完全可控有限API服务开箱即用需手动启动内置适合场景快速部署/生产性能调优/研究本地体验

2.2 基于ultrascale 架构FPGA的system manager wizard使用(温压监测)

2.2 基于ultrascale 架构FPGA的system manager wizard使用(温压监测)

Reference: 《PG185》《UG580》 部分文案源于网友博客,AIGC和个人理解,如有雷同纯属抄袭 一、介绍 简述: Xilinx System Management Wizard 是 Vivado 和 Vitis 工具中的一个图形化配置工具,主要用于为 FPGA 设计生成与系统监控和管理相关的 IP 核。这个工具帮助用户配置和集成诸如温度监控、电压监控、时钟监控、外部模拟输入等功能到 FPGA 设计中。它支持AXI4-Lite 与 DRP 接口 主要功能: * 温度和电压监测: * 内建传感器:支持 FPGA 内部温度、VCCINT(核心电压)、VCCAUX(辅助电压)、VCCBRAM(BRAM 电压)等电压和温度监测。通过 SYSMON 进行实时数据采集。

无人机消防通道占用巡检识别 消防通道占用目标检测数据集 智慧消防场景中违规占用行为自动监测与预警 智慧城市治理巡检第10456期

无人机消防通道占用巡检识别 消防通道占用目标检测数据集 智慧消防场景中违规占用行为自动监测与预警 智慧城市治理巡检第10456期

消防通道占用目标检测数据集 数据集核心信息表 类别数量类别名称数据总量格式种类核心应用价值1消防通道551YOLO 格式用于训练消防通道占用识别模型,助力智慧消防场景中违规占用行为的自动监测与预警 数据集关键要素说明 1. 类别设计 * 聚焦消防场景核心检测需求,仅设置 “消防通道” 单一类别,避免冗余标注干扰模型学习; * 类别定义明确,围绕消防通道的物理特征标注,确保模型能精准定位目标区域。 往期热门主题 主页搜两字"关键词"直达 代码数据获取: 获取方式:***文章底部卡片扫码获取*** . 覆盖了YOLO相关项目、OpenCV项目、CNN项目等所有类别, 覆盖各类项目场景: 项目名称项目名称基于YOLOv8 智慧农业作物长势监测系统基于YOLOv11 人脸识别与管理系统基于YOLOv26 无人机巡检电力线路系统PCB板缺陷检测(基于YOLOv8)智慧铁路轨道异物检测系统(基于YOLOv11)基于YOLOv26 102种犬类检测系统基于YOLOv8 人脸面部活体检测无人机农田病虫害巡检系统(基于YOLOv11)水稻害虫检测识别(基于YOL

3分钟上手OpenDroneMap:无人机照片秒变专业测绘成果

3分钟上手OpenDroneMap:无人机照片秒变专业测绘成果 【免费下载链接】ODMA command line toolkit to generate maps, point clouds, 3D models and DEMs from drone, balloon or kite images. 📷 项目地址: https://gitcode.com/gh_mirrors/od/ODM 还在为无人机照片处理发愁吗?OpenDroneMap这款开源神器能让你的航拍影像轻松转化为精准的3D模型、数字高程图和正射影像。无论你是测绘新手还是摄影测量爱好者,这篇快速指南将带你零基础掌握这个强大的数据处理工具。 为什么你应该选择ODM? 📈 传统的商业测绘软件不仅价格昂贵,操作也相当复杂。而OpenDroneMap完全免费开源,支持Windows、Mac和Linux三大平台。它能处理常规JPEG、TIFF格式照片,还支持从视频中提取帧进行建模,大大拓宽了数据来源。更重要的是,ODM提供GPU加速功能,让处理效率翻倍提升! 超简单3步操作流程 🚀 准备工作: