iOS手机App爬虫- (1) Mac安装Appium真机运行环境
iOS手机App爬虫
- 一、环境准备与工具安装
- 1. 开发基础环境配置
- 1.1 Node.js环境
- 1.2 Xcode套件
- 1.3 Java环境
- 2. 核心测试工具链
- 2.1 Appium主程序
- 2.2 辅助工具集
- 3. 可视化工具
- 二、设备与环境验证
- 1. 设备信息获取
- 2. 环境健康检查
- 三、WebDriverAgent编译部署
- 1. 设备端准备
- 2. 项目配置
- 3. Xcode证书配置
- 4. 编译与部署
- 四、自动化测试执行
- 1. 启动Appium服务
- 2. 配置Appium Inspector
- 3. 参数获取方法
- 4. 启动测试会话
- 五、常见问题排查
一、环境准备与工具安装
1. 开发基础环境配置
1.1 Node.js环境
# 安装NodeJs(JavaScript运行时环境,用于运行Appium服务)
nvm install 21
nvm use 21
node --version # 验证安装
npm -v # 验证包管理器
1.2 Xcode套件
- Xcode安装:从App Store下载安装(iOS应用开发必备IDE)

- Xcode Command Line Tools:终端执行安装命令
xcode-select --install
1.3 Java环境
# 安装Java(Appium部分依赖需要Java环境)
brew install java# 配置环境变量(下面内容添加至/etc/profile)
echo 'JAVA_HOME=/opt/homebrew/opt/openjdk
export JAVA_HOME' | sudo tee -a /etc/profile# 然后source一下
source /etc/profile
2. 核心测试工具链
2.1 Appium主程序
# 安装Appium(跨平台自动化测试框架)
npm install -g appium
# 查看支持的驱动列表(如下图)
appium driver list# 安装XCUITest驱动(iOS专用测试驱动)
appium driver install xcuitest

2.2 辅助工具集
# 安装WebDriver客户端库
npm install -g wd# 安装Appium Doctor(环境检测工具,它检查Appium成功运行的前提条件)
npm install -g appium-doctor# 安装Carthage(WebDriverAgent依赖管理器)
brew install carthage# 安装设备管理工具
brew install libimobiledevice # 设备通信库
brew install ideviceinstaller # 应用管理工具
brew install ios-deploy # 应用部署工具
3. 可视化工具
- Appium Desktop:(可选,未安装状态下可直接使用命令行启动Appium)下载地址(2022年后停止更新)
- Appium Inspector:下载地址(元素定位与调试工具)
二、设备与环境验证
1. 设备信息获取
# 获取设备UDID
idevice_id -l# 查看设备详细信息
ideviceinfo
ideviceinfo -k DeviceName # 设备名称
ideviceinfo -k ProductVersion # iOS版本# 查看已安装应用列表
ideviceinstaller -l -o list_user# 验证设备连接
ios-deploy -c


2. 环境健康检查
appium-doctor --ios

三、WebDriverAgent编译部署
1. 设备端准备
- 开启开发者模式:设置 > 隐私与安全性 > 开发者模式(连点开启)
- 启用UI自动化:开发者选项 > 启用UI自动化
2. 项目配置
# 修改文件所有权(Username修改为自己的appium实际安装路径)
sudo chown -R $(whoami) /Users/{Username}/.appium# 编辑 WebDriverAgent.xcodeproj 项目(下面2种方式任选其1)
# 1. 命令行快速启动项目
sudo appium driver run xcuitest open-wda
# 2. 手动双击文件 WebDriverAgent.xcodeproj 文件启动
/Users/{Username}/.appium/node_modules/appium-xcuitest-driver/node_modules/appium-webdriveragent/WebDriverAgent.xcodeproj

3. Xcode证书配置
-
修改以下目标的签名配置(每一个都要配置!!!):
- WebDriverAgentRunner
- WebDriverAgentLib
- IntegrationApp
-
配置要点:
-
勾选
Automatically manage signing -
Team一栏选择个人开发者账号(需登录Apple ID) -
修改
Bundle Identifier(把Facebook的内容换成自己的(随便修改,保证唯一即可)

-
设置目标iOS版本与设备iOS版本匹配

-
修改Scheme
Product -> Scheme -> WebDriverAgentRunner

-
修改Destination
Product -> Destination -> 选择自己的手机

-
4. 编译与部署
- 执行测试编译:
Product > Test - 首次编译安装时会遇到需要证书授权的报错,需要在手机上信任证书后再次执行第1步:
- 设置 > 通用 > VPN与设备管理 > 信任开发者证书


- 设置 > 通用 > VPN与设备管理 > 信任开发者证书
- 验证服务状态:
- 手机访问
localhost:8100/status

- 命令行执行端口映射:
# 端口映射 (把手机上启动的8100端口服务映射到电脑端)iproxy 8100 8100- 电脑访问
localhost:8100/status

- 手机访问
四、自动化测试执行
1. 启动Appium服务
appium --allow-cors

2. 配置Appium Inspector

{"platformName": "iOS","appium:deviceName": "XXXXX", //手机名"appium:platformVersion": "18.3.1", //手机iOS系统版本"appium:bundleId": "com.tencent.xin", //要启动的手机app的bundleId"appium:automationName": "XCUITest","appium:xcodeOrgId": "XXXXX", //开发者ID"appium:udid": "XXXXXXXX-XXXXXXXXXXXX", //手机设备ID"appium:noReset": true,"appium:xcodeSigningId": "iPhone Developer"
}
3. 参数获取方法
| 参数项 | 获取命令 |
|---|---|
| deviceName | ideviceinfo -k DeviceName |
| platformVersion | ideviceinfo -k ProductVersion |
| bundleId | ideviceinstaller -l -o list_user |
| udid | idevice_id -l |
| xcodeOrgId | Xcode账户设置中查看(如下图,在这个界面下点击那个 Other就能获取了) |

4. 启动测试会话
- 确保设备处于解锁状态
- 点击Start Session开始自动化测试

五、常见问题排查
- 证书信任问题:需在设备端手动信任开发者证书
- 端口占用冲突:确保8100端口未被其他程序占用
- WDA编译失败:检查Xcode版本与iOS系统版本兼容性
- 元素定位失败:使用Appium Inspector验证控件树结构
提示:建议保持iOS设备屏幕常亮(设置 > 显示与亮度 > 自动锁定 > 永不)
相关文章:
iOS手机App爬虫- (1) Mac安装Appium真机运行环境
iOS手机App爬虫 一、环境准备与工具安装1. 开发基础环境配置1.1 Node.js环境1.2 Xcode套件1.3 Java环境 2. 核心测试工具链2.1 Appium主程序2.2 辅助工具集 3. 可视化工具 二、设备与环境验证1. 设备信息获取2. 环境健康检查 三、WebDriverAgent编译部署1. 设备端准备2. 项目配…...
android s下make otapackage编译失败
[DESCRIPTION] android s上,我司推荐使用split build的方式进行编译,但是部分客户依旧会采用AOSP full build的方式进行编译。而我司在这块release的时候,并未进行验证。因此执行make otapackage的时候,会出现如下报错。 [0312/…...
《Elasticsearch实战:从零开始构建高效全文搜索引擎》
内容概览: Elasticsearch简介 Elasticsearch的定义与应用场景 Elasticsearch的核心特性 环境搭建与安装 安装Elasticsearch 启动与配置Elasticsearch 索引设计与映射 创建索引 定义映射(Mapping) 字段类型与分析器的选择 数据导入与管理…...
【Linux网络】认识协议(TCP/UDP)、Mac/IP地址和端口号、网络字节序、socket套接字
⭐️个人主页:小羊 ⭐️所属专栏:Linux 很荣幸您能阅读我的文章,诚请评论指点,欢迎欢迎 ~ 目录 1、初识协议2、UDP、TCP3、Mac、IP地址4、端口号5、网络字节序6、socket 1、初识协议 协议就是一种约定。如何让不同厂商生产的计…...
12、数据库、Sql单表多表
文章目录 一、数据库简介二、单表三、多表四、等值连接五、内联结六、inner join on、left join on、right join on区别七、模糊查找八、作业 一、数据库简介 数据在内存: 优点:读写速度快缺点:程序结束后数据丢失 保存到文件 优点&#…...
Spring Boot 实现图片上传并生成缩略图功能
在实际开发中,上传图片并生成缩略图是一项常见需求,例如在电商平台、社交应用等场景中,缩略图可以有效提高页面加载速度,优化用户体验。本文将介绍如何在 Spring Boot 项目中实现上传图片并生成缩略图的功能。 📦 1. …...
洛谷B3664[语言月赛202209] 零食售卖点
B3664 [语言月赛202209] 零食售卖点 - 洛谷 代码区: #include<bits/stdc.h>using namespace std;int main(){int n;cin >> n;int arry[n],dp[n];for(int i0;i<n;i){cin >> arry[i];}dp[0]0;sort(arry,arryn);for(int i1;i<n;i){dp[i]arry…...
贪心算法:JAVA从理论到实践的探索
在计算机科学领域,贪心算法是一种简单而高效的算法设计策略,广泛应用于优化问题的求解。它通过在每一步选择中都采取当前状态下最优的选择,以期望最终得到全局最优解。本文将深入探讨贪心算法的原理、应用场景,并通过具体代码示例,帮助读者更好地理解和掌握这一算法。 一…...
线程池10种常见坑
1. 直接使用 Executors 创建线程池 直接使用 Executors 提供的快捷方法: ExecutorService executor Executors.newFixedThreadPool(10);问题 无界队列:newFixedThreadPool 使用的队列是 LinkedBlockingQueue,它是无界队列,任务…...
鸿蒙ArkTs如何实现pdf预览功能?
鸿蒙ArkTs如何实现pdf预览功能? 前言PDFKit运行示例代码报错真机运行先看效果一、预览本地pdf文件二、预览线上的pdf文件三、预览沙箱目录中pdf的文件(重点)效果中的整体代码总结 Harmony OS NEXT版本(接口及解决方案兼容API12版本或以上版本) 前言 在开…...
KylinSP3 | 防火墙和麒麟安全增强设置KySec
一、系统防火墙原理 麒麟操作系统从V10版本开始,默认使用了Firewalld防火墙,Firewalld是能提供动态管理的防火墙,支持网络/防火墙区域,用于定义网络连接或接口的信任级别。支持IPv4和IPv6防火墙设置、以太网桥接和IP集。将运行时…...
【C++】面试常问八股
5、内存管理 野指针 野指针指的是未进行初始化或未清零的指针,不是NULL指针野指针产生原因及解决方案: 指针变量未初始化:指针变量定义时若未初始化,则其指向的地址是随机的,不为NULL;定义时初始化为NULL…...
vscode多文件编译构建(CMake)和调试C++
目录 1. CMake 基础构建工具及作用相关配置文件 2. 配置 tasks.json关键字段详细解释 3. 配置 launch.json关键字段详细解释 4. 配置 CMakeLists.txt关键部分详细解释 5. 构建和调试项目1. 仅构建项目1.1 任务执行顺序1.2 cmake 任务执行详情1.3 build 任务执行详情1.4 构建后的…...
使用Docker 部署 LNMP+Redis 环境
使用Docker 部署 LNMPRedis 环境 Docker 简介 Docker 是一个开源的应用容器引擎,让开发者可以打包他们的应用以及依赖包到一个可移植的容器中,然后发布到任何流行的 Linux 机器上,也可以实现虚拟化。容器是完全使用沙箱机制,相互…...
文件上传漏洞学习笔记
一、漏洞概述 定义 文件上传漏洞指未对用户上传的文件进行充分安全校验,导致攻击者可上传恶意文件(如Webshell、木马),进而控制服务器或执行任意代码。 危害等级 ⚠️ 高危漏洞(通常CVSS评分7.0)ÿ…...
375_C++_cloud手机推送,添加人脸告警信息到任务队列中,UploadAlarmPush是典型的工厂模式应用,为什么使用工厂模式完成这部分代码
一:AlarmFaceInfo的应用 让我帮你解析这个lambda表达式的实现: // ...................... .h ...........................// struct RsMsgPushTask_S : public Task{AlarmType_E mainAlarmType;unsigned int subAlarmType;DateTime alarmTime...
Spring Boot 中的日志管理
一、日志框架选择 1. 主流框架对比 框架特点Spring Boot 默认支持Logback- 性能优异,Spring Boot 默认集成- 支持自动热更新配置文件✅ (默认)Log4j2- 异步日志性能更强- 支持插件扩展- 防范漏洞能力更好❌ (需手动配置)JUL (JDK自带)- 无需额外依赖- 功能简单&am…...
火绒终端安全管理系统V2.0网络防御功能介绍
火绒终端安全管理系统V2.0 【火绒企业版V2.0】网络防御功能包含网络入侵拦截、横向渗透防护、对外攻击检测、僵尸网络防护、Web服务保护、暴破攻击防护、远程登录防护、恶意网址拦截。火绒企业版V2.0的网络防御功能,多层次、多方位,守护用户终端安全。 …...
海康摄像头 + M7s(Monibuca) + FFmpeg + Python实现多个网络摄像头视频流推流
最近在研究流媒体服务器时,我注意到了一款开源软件——M7s。按照官网的指南部署完成后,我开始进行测试,发现单视频流推送非常顺利,没有任何问题。然而,当我尝试进行多视频流推送时,却发现网上的相关教程寥寥…...
抖音视频如何下载保存去水印
随着短视频平台的兴起,抖音作为国内最受欢迎的短视频平台之一,吸引了大量用户上传和观看各种创意视频。许多用户在浏览抖音视频时,往往会想要保存一些有趣或精彩的视频片段,但抖音视频通常会有水印,影响观看体验。为了…...
Claude Code 深度安装与避坑指南(小白级实操版)
如果你听说过 Claude Code,但被那些黑漆漆的命令行(Terminal)挡住了去路,这份文档就是为你准备的。我们不仅教你如何安装,更要把你可能踩到的“权限、网络、路径”大坑提前填平。 第一步:安装必备软件 1、…...
互联网大厂Java面试:Spring Boot/Redis/Kafka/K8s 可观测 + RAG(向量检索/Agent)三轮追问实录
互联网大厂 Java 面试实录:Spring Boot Redis Kafka Kubernetes RAG(向量检索/Agent)三轮追问场景:某内容社区与UGC平台,近期上线“RAG 智能客服”(企业文档问答 工单流转),并要…...
别再只盯着激光雷达了!聊聊低成本单目摄像头测距在机器人/小车项目里的那些事儿
低成本单目摄像头测距:机器人项目中的实战技巧与避坑指南 在机器人、智能小车和无人机项目中,距离感知一直是核心挑战之一。当大家一窝蜂地追求激光雷达方案时,却忽略了手边最经济实惠的传感器——普通摄像头。单目视觉测距技术,这…...
python lint-staged
# 聊聊 Python 项目中的 lint-staged:一个被低估的提效工具 在 Python 项目里,代码质量检查工具大家都不陌生,像 flake8、black、isort 这些几乎是标配。但很多人可能遇到过这样的场景:每次提交代码前,都要手动跑一遍检…...
Swift学习笔记25-函数式编程
Array的常见操作//Array的常见操作 //注意:Map和FlatMap都是映射高级函数var arr [1, 2, 3, 4] //这是这块的基础 var arr2 arr.map { $0 * 2 } //每一个元素分别乘2 print(arr2)//[2, 4, 6, 8] //map:对数组的每个元素应用指定的函数,返回一个新数组。…...
5个高效方案彻底解决Visual C++运行库安装问题
5个高效方案彻底解决Visual C运行库安装问题 【免费下载链接】vcredist AIO Repack for latest Microsoft Visual C Redistributable Runtimes 项目地址: https://gitcode.com/gh_mirrors/vc/vcredist VisualCppRedist AIO是一个强大的Visual C运行库集成安装包…...
2026奇点智能技术大会核心成果发布(AI文档生成引擎v3.2正式开源)
第一章:2026奇点智能技术大会:AI接口文档生成 2026奇点智能技术大会(https://ml-summit.org) 在2026奇点智能技术大会上,AI驱动的接口文档自动生成技术成为核心议题之一。该技术依托多模态大模型对源码、注释、测试用例及通信日志的联合理解…...
【限时解密】GitHub Copilot Enterprise未公开的3项性能开关:启用后P99延迟下降63%,仅限前500名开发者获取配置清单
第一章:智能代码生成性能优化技巧 2026奇点智能技术大会(https://ml-summit.org) 智能代码生成模型(如基于LLM的Copilot类工具)在实际工程落地中常面临响应延迟高、上下文吞吐低、生成结果不稳定等问题。优化其端到端性能需兼顾推理效率、缓…...
3步掌握通达信缠论分析:从理论到实战的完整指南
3步掌握通达信缠论分析:从理论到实战的完整指南 【免费下载链接】Indicator 通达信缠论可视化分析插件 项目地址: https://gitcode.com/gh_mirrors/ind/Indicator 你是否曾经面对复杂的K线图感到困惑?是否想要将缠论的精髓转化为直观的交易信号&a…...
