IOS自动化—将WDA打包ipa批量安装驱动

前言

CSDN:

  • ios自动化-Xcode、WebDriverAgent环境部署

  • ios获取原生系统应用的包

如果Mac电脑没有配置好Xcode相关环境,可以参考以上文章。

必要条件

  • Mac电脑,OS版本在12.4及以上(低于这个版本无法安装Xcode14,装不了Xcode14就打包不了IOS16的驱动)

  • IOS设备手机,IOS版本在11.0及以上

  • Xcode14.0及以上

  • 公司的IOS开发者账号(如果是个人账号,只能用七天就要重新打包,这就失去了打包的意义了)

为何做这个

在之前写的IOS自动化教程中,我都是采用的Mac电脑连接ios设备,使用Xcode一个个进行打包,非常麻烦。

就这样忍受了不知道多久,一次偶然的机会,我在sonic官网看到了可以将WebDriverAgent打包成ipa包,直接进行安装,这不就是当年我一直想要做的事情却因为查不到资料而放弃了的事情吗。

由于官网写的比较精简,只有一些命令,于是我打算完善和整合一下详细的操作步骤。

这样做了之后,只需要拿着ipa包直接进行安装,然后启动WebDriverAgent服务就可以了。

注:ipa包类似于Android端的apk安装包,ipa是ios的安装包后缀格式。

一、下载WebDriverAgent

appium提供的:https://github.com/appium/WebDriverAgent

Airtest提供的:https://github.com/AirtestProject/iOS-Tagent

直接通过git clone下载到Mac电脑本地即可。

二、进行打包WDA.ipa

「检查当前是否满足前面的必要条件,没满足请先满足,否则后面无法进行或有各种各样的报错!」

  • 确保Mac电脑已经安装了Xcode14.0及以上版本(此处是为了兼容现在最新的ios16设备)

  • 确认ios设备和Mac电脑已经连接(插上数据线就行,弹出信任按钮点击信任即可)

  • 确保Mac电脑有足够的内存,Xcode很大!

1、指定xcode运行路径

启动终端,运行xcodebuild进行检查配置 , 如果没报错可以进行第2步,有报错跟着我一起解决

  1. (base) QA-IPv6:Downloads avidly$ xcodebuild

  2. xcrun: error: active developer path ("/Applications/Xcode.app/Contents/Developer") does not exist

  3. Use `sudo xcode-select --switch path/to/Xcode.app` to specify the Xcode that you wish to use for command line developer tools, or use `xcode-select --install` to install the standalone command line developer tools.

  4. See `man xcode-select` for more details.

报错解决一:path does not exist

这里报错的错误日志提醒也非常明显,大意就是说没有找到你的Xcode.app这个路径下的/Contents/Developer这些文件,所以我们要指定一下Xcode.app的路径,这个路径就是你下载Xcode解压之后所放的位置,由于我当初下载的是Xcode-beta14.0版本,所以我就指定的是Xcode-beta.app,可以按需更改这个文件的名字。

并且在日志中给出了解决办法:

sudo xcode-select --switch path/to/Xcode.app

用这个命令进行指定你所要使用的Xcode。

「实操指定路径命令」

sudo xcode-select --switch /Users/avidly/Downloads/Xcode-beta.app

实际运行效果:

  • 执行的时候要输入密码,这个密码是你Mac电脑的密码

  1. (base) QA-IPv6:Downloads avidly$ sudo xcode-select --switch /Users/avidly/Downloads/Xcode-beta.app

  2. Password:

  3. (base) QA-IPv6:Downloads avidly$

报错解决二:not contain an Xcode project, workspace or package.

除了第一个报错,我们还可能遇到这个报错

xcodebuild: error: The directory /Users/avidly/Downloads does not contain an Xcode project, workspace or package.

这个报错,如果没有从事过xcode开发或者对xcode不是很熟悉的话,可能不是很清楚他的含义。

这里作为一个门外汉,通过自己的实践经验做个说明:

这个报错表示,「当前所运行的文件目录下,没有找到xcode类型的文件项目。」

「解决方案:」

  • 1、打开Xcode,参考我之前的文章,打开对应的WebDriverAgent文件,选好各项配置,填好开发者账号(公司级别)

  • 2、打开Xcode,File -> Save As Workspace...

  • 3、保存名字可以任意取,我保存的是xiaozaiTest.xcworkspace

  • 4、将该文件放到和xcode.app同一目录下。

2、按步骤执行命令

第一步
  • 执行如下命令前,需要cd到第一步中我们保存的xcode项目文件目录下

$ xcodebuild build-for-testing -scheme WebDriverAgentRunner -sdk iphoneos -configuration Release -derivedDataPath /tmp/derivedDataPath

「实操截图展示」

这里需要等一小会,直到出现「TEST BUILD SUCCEEDED」,就表示成功了。

第二步

执行如下命令

 
  1. $ cd /tmp/derivedDataPath

  2. $ cd Build/Products/Release-iphoneos

  3. $ mkdir Payload && mv *.app Payload

第三步

执行如下命令

$ zip -r WDA.ipa Payload

执行完毕后,你在当前目录下可以看到有个WDA.ipa文件,这就代表我们成功了。

「这个时候我们就可以脱离Mac,直接使用windows操作了。」

之后也不需要再来xcode进行构建WebDriverAgent了,直接安装这个ipa包即可。

三、安装ipa文件

前面我们把ipa文件构建出来了,接下来就是需要进行安装了。

安装ipa文件可以通过iTools,也可以通过其他第三方进行安装,比如我比较推荐的是tidevice,它可以使用python编写批量安装,批量启动的脚本,这些我均已在公司落地。

下载tidevice

直接通过pip进行下载,这里我给大家加个速,我自己配置了全局加速,相关文章可以查看我之前写的pip设置全局镜像源

tidevice的相关命令在之前也有写过,可以进行翻阅

$ pip install tidevice -i https://pypi.tuna.tsinghua.edu.cn/simple

安装

「只连接了一台ios设备可以通过如下命令安装」

$ tidevice install WDA.ipa

「连接了多台设备可以通过如下命令指定设备安装」

$ tidevice --udid 设备的UDID号 install WDA.ipa

四、启动WebDriverAgent服务

这个我之前有写过批量启动的文章:

公众号 : python非阻塞模式批量启动ios设备的WebDriverAgent

博客:python批量启动ios设备的WebDriverAgent

这里给一个示列:

tidevice --udid 49687f67a4c70fbd027e19b4a5e40218acdc06e4 xctest -B com.facebook.WebDriverAgentRunnerxzz.xctrunner -e USB_PORT:8118
  • --udid : 表示指定设备运行

  • 49687f67a4c70fbd027e19b4a5e40218acdc06e4 :ios设备的udid

  • com.facebook.WebDriverAgentRunnerxzz:xcode打包构建时写的包名

  • USB_PORT:8118 通过8118端口进行连接

看到WebDriverAgent start successfully则表示WebDriverAgent服务启动成功了!

总结

主要命令如下:

  1. $ xcodebuild build-for-testing -scheme WebDriverAgentRunner -sdk iphoneos -configuration Release -derivedDataPath /tmp/derivedDataPath

  2. $ cd /tmp/derivedDataPath

  3. $ cd Build/Products/Release-iphoneos

  4. $ mkdir Payload && mv *.app Payload

  5. $ zip -r WDA.ipa Payload

  6. $ tidevice install WDA.ipa

行动吧,在路上总比一直观望的要好,未来的你肯定会感 谢现在拼搏的自己!如果想学习提升找不到资料,没人答疑解惑时,请及时加入扣群: 320231853,里面有各种软件测试+开发资料和技术可以一起交流学习哦。

最后感谢每一个认真阅读我文章的人,礼尚往来总是要有的,虽然不是什么很值钱的东西,如果你用得到的话可以直接拿走:

这些资料,对于【软件测试】的朋友来说应该是最全面最完整的备战仓库,这个仓库也陪伴上万个测试工程师们走过最艰难的路程,希望也能帮助到你!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/671824.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

纯血鸿蒙APP实战开发——自定义视图实现Tab效果

介绍 本示例介绍使用Text、List等组件,添加点击事件onclick,动画,animationTo实现自定义Tab效果。 效果预览图 使用说明 点击页签进行切换,选中态页签字体放大加粗,颜色由灰变黑,起到强调作用,同时&…

STM32编译前置条件配置

本文基于stm32f104系列芯片,记录编程代码前需要的操作: 添加库文件 在ST官网下载标准库STM32F10x_StdPeriph_Lib_V3.5.0,解压后,得到以下界面 启动文件 进入Libraries,然后进入CMSIS,再进入CM3&#xff…

excel公式后面加的““是什么意思呢?

这个大体上有两种用意。 1.将数值转换成文本 VLOOKUP(F2,A:C,3,0) 举个使用VLOOKUP函数的场景,如下图所示,员工信息表A:C区域中,A列员工号是文本型数字,使用VLOOKUP函数查询找的时候,F列的员工号数值型、文本型都有…

Linux学习(一)-- 简单的认识

目录 1. Linux的诞生 2.Linux发行版 拓展: (1)什么是Linux系统的内核? (2)什么是Linux系统发行版? 1. Linux的诞生 Linux创始人: 林纳斯 托瓦兹 Linux 诞生于1991年,作者上大学…

【copilot 使用指南 - @workspace】

为什么需要workspace 默认情况下,copilot只能分析当前文件中的代码内容, 那么如何让copliot 跨文件分析,分析整个项目,分析整个代码目录下的代码,就要用到workspace,举例 :假设如下代码 index…

2025第23届太原煤炭(能源)工业技术与装备展览会

第二十三届太原煤炭(能源)工业技术与装备展览会 邀 请 函 指导单位: 中国煤炭工业协会 主办单位:山西省煤炭工业协会 承办单位:太原奇新展览有限公司 展览时间:2025年4月22-24日 展览地点&#xff1a…

k8s集群Grafana精选dashboard页面

文章目录 参考文档 Grafana自选模板推荐模板:13332、13824、14518Grafana默认配置我们选择 Node Exporter/Nodes 的 Dashboard 进去:点击 Kubernetes/Networking/Cluster 进去使用模板查看结果 Grafana接入Prometheus数据Grafana添加监控模板导入 1860_r…

获取转转数据,研究完转转请求,tx在算法方面很友好。

本篇文章仅供学习讨论。 文章中涉及到的代码、实例,仅是个人日常学习研究的部分成果。 如有不当,请联系删除。 在研究完阿里的算法以后(其实很难说研究完,还有很多内容没有研究透,只能说暂时告一段落)&…

bfs之走迷宫

文章目录 走迷宫广度优先遍历代码Java代码打印路径 走迷宫 给定一个 nm 的二维整数数组,用来表示一个迷宫,数组中只包含 0或 1,其中 0表示可以走的路,1表示不可通过的墙壁。 最初,有一个人位于左上角 (1,1) 处&#…

流畅的python-学习笔记_符合python风格的对象

对象表示形式 查看对象说明,可以通过__repr__和__str__方法,前者主要用于开发者,后者主要用于用户,这两个方法分别对内置函数repr和str函数提供支持 向量类 备选构造方法 classmethod和staticmethod staticmethod用的不是特别…

git tag 相关操作

文章目录 前言一、git里面的Tag二、Tag 类型1. 轻量级标签&#xff08;Lightweight Tag&#xff09;2. 注释标签&#xff08;Annotated Tag&#xff09; 其他常用操作git taggit show <tagname>git push origin <tagname>删除tag使用 gitk 查看效果 总结 前言 一般…

Go 语言(四)【常用包使用】

1、命令行参数包 flag flag 包就是一个用来解析命令行参数的工具。 1.1、os.Args import ("fmt""os" )func main() {if len(os.Args) > 0 {for index, arg : range os.Args {fmt.Printf("args[%d]%v\n", index, arg)}} } 运行结果&#…