新工具开源!一款iOS自动化利器(附地址)

简介: tidevice 是阿里的内部的一个小组用来做 iOS 自动化用的工具,通过逆向iOS通信协议,使用纯Python实现。目前淘宝和其他部分事业部已经全面使用了该技术,进行iOS应用的性能采集,UI自动化。

tidevice 是阿里的内部的一个小组用来做 iOS 自动化用的工具,通过逆向iOS通信协议,使用纯Python实现。目前淘宝和其他部分事业部已经全面使用了该技术,进行iOS应用的性能采集,UI自动化。


注:这里的被测应用无需做任何修改,使用不再局限于Mac上。

开源地址:https://github.com/alibaba/taobao-iphone-device

tidevice可以帮你做什么呢?



  • 应用安装,启动,停止,查看
  • 启动 WDA(WebDriverAgent)(注:该操作不依赖xcodebuild,可跨平台使用)
  • 运行UITests (跨平台使用)
  • 性能采集(类似 PerfDog)
  • 截图、syslog采集 等等


熟悉libimobiledevice工具集的同学可能知道大部分上面提到的功能,为了方便日常的使用tidevice对libimobiledevice中已有的功能也重新实现了一遍(比如 截图,看日志,应用安装),这样有tidevice你就可以完成日常所有相关的操作了。

除了这些众所周知的功能,tidevice还可以完成WDA的启动,iOS设备的性能采集。

可能有人不知道WDA为何物,这里简单的介绍一下。WDA全名WebDriverAgent是facebook推出的可以实现黑盒iOS自动化的项目。该项目作为一个App运行在iOS手机上,被测应用不需要做任何的更改(比如接入sdk),进行无侵入的测试。唯一不方便的是手机必须连接上Mac电脑,并使用Mac上才有的xcodebuild才能将WDA这个App运行起来,这也导致其推广起来比较困难。

文章中会重点介绍一下tidevice 如何完成WDA的启动。原理比较简单:tidevice通过模拟xcodebuild与手机进行通信,向手机发送特定的指令,来启动WDA,从而可以脱离Mac的限制,能够在Linux、Windows上运行起来iOS自动化,而在tidevice出现之前,这些是无法做到的。

安装



因为是Python项目,一条命令即可完成安装  pip3 install -U tidevice安装完成后,先执行几个命令测试一下tidevice version  查看tidevice版本tidevice list 查看已经连接上的iPhone设备

常用命令



安装应用

tidevice install example.ipa通过URL安装应用 (实际使用时网址要改成正确的)tidevice install http://example.org/demo.ipa应用启动tidevice launch com.apple.Preferences截图tidevice screenshot screenshot.jpg查看系统日志tidevice syslog其他常用的命令帮助命令查看,基本上常用的命令都有了tidevice -h


启动WebDriverAgent



目前iOS的黑盒自动化,最流行的方法是通过WDA来实现的。在tidevice出现之前,WDA只能通过xcodebuild来启动,而运行xcodebuild则必须有一台Mac才行。

tidevice没有通过xcodebuild,而是通过usbmuxd直接跟手机上的服务进行直接通信完成手机上WDA的启动。usbmux在不同的平台都有开源的实现,所以tidevice不仅能在Mac上运行,也能在Linux、Windows上运行。

image.png


关于usbmux通信协议这部分,苹果当然不会告诉直接告诉我们。不过因为usbmux本身就是socket套接字,所以我们可以直接截获其中的内容,然后根据开源界已有的成果,其中大部分的内容已经被破解了。先用xcodebuild完成一次WDA的启动,然后找到关键的通信内容,再用python来模拟回放一遍,就可以抛弃xcodebuild不用了。相对于xcodebuild启动,tidevice因为通信内容更精简,所以启动速度更快(2s左右),另外也更稳定。

 



说了一堆理论,我们看一下怎么使用的吧


前提条件

  1. 数据线将 iPhone 手机连接到 PC 上
  2. 手机上已经有WebDriverAgent这个 App 了。这个可以通过 xcode 编译源码安装,也可以用开发者证书重签名的 WebDriverAgent.ipa 安装到手机。
  3. Linux和Windows因为默认没有usbmux这个服务,提前安装一下就可以。可以参考这个issue:
    https://github.com/alibaba/taobao-iphone-device/issues/7

 

前提条件OK了的话,像下图这样执行命令就可以将WDA启动起来了。

image.gifimage.png

 

而验证WDA是否工作最简单的办法就是打开浏览器,网站:http://localhost:8100/status能看到下面的输出说明WDA工作正常了

image.gifimage.png

或者也可以直接使用Appium调度

image.png


运行 UITests



有些用户的开发能力可能比较强,习惯直接用OC或者Swift直接写UI自动化用例。通过tidevice也支持的。网上找了一个OC写的XCTest UITests demo项目https://github.com/FeiHuang93/XCTest-Demo使用xcode编译安装到手机上之后,有两个应用

testXCTestUITests  执行测试的应用 testXCTest 被测应用

使用下面的命令执行即可

tidevice xctest --bundle-id philhuang.testXCTestUITests.xctrunner --target-bundle-id philhuang.testXCTest

image.png

将被测应用和执行测试应用打包成ipa后,就可以在多个的手机上运行了。


总结



现在这个项目在阿里内部目前用的还不错,希望欢迎多多试用反馈。如果好用的话,希望可以留下你的Star
https://github.com/alibaba/taobao-iphone-device


相关文章
|
8月前
|
运维 Prometheus 监控
3 年部署经验总结:用自动化工具轻松管理 300+ 服务器开源软件
三年前接手公司IT部门时,我满怀信心,却发现部署效率低下。尽管使用了GitLab、Jenkins、Zabbix等100+开源工具,部署仍耗时费力。文档厚重如百科,却难解实际困境。一次凌晨三点的加班让我下定决心改变现状。偶然看到一篇国外博客,介绍了自动化部署的高效方式,我深受启发。
316 0
|
7月前
|
机器学习/深度学习 人工智能 测试技术
EdgeMark:嵌入式人工智能工具的自动化与基准测试系统——论文阅读
EdgeMark是一个面向嵌入式AI的自动化部署与基准测试系统,支持TensorFlow Lite Micro、Edge Impulse等主流工具,通过模块化架构实现模型生成、优化、转换与部署全流程自动化,并提供跨平台性能对比,助力开发者在资源受限设备上高效选择与部署AI模型。
613 9
EdgeMark:嵌入式人工智能工具的自动化与基准测试系统——论文阅读
|
6月前
|
人工智能 搜索推荐 UED
一个牛逼的国产AI自动化工具,开源了 !
AiPy是国产开源AI工具,结合大语言模型与Python,支持本地部署。用户只需用自然语言描述需求,即可自动生成并执行代码,轻松实现数据分析、清洗、可视化等任务,零基础也能玩转编程,被誉为程序员的智能助手。
|
7月前
|
Java 测试技术 API
自动化测试工具集成及实践
自动化测试用例的覆盖度及关键点最佳实践、自动化测试工具、集成方法、自动化脚本编写等(兼容多语言(Java、Python、Go、C++、C#等)、多框架(Spring、React、Vue等))
499 6
|
8月前
|
人工智能 数据可视化 数据挖掘
团队日报不用愁!自动化生成工具亲测:任务进度实时同步
本文深入分析了传统手动日报在数据孤岛、格式混乱和时效性差三大痛点,并探讨了自动化日报带来的效率提升、决策优化等四大核心价值。通过对板栗看板、SmartBrief、n8n 等六款主流工具的功能、适用场景及实战效果进行测评,为企业提供科学的选型建议与实施路径。
团队日报不用愁!自动化生成工具亲测:任务进度实时同步
|
6月前
|
人工智能 缓存 自然语言处理
86_自动化提示:AutoPrompt工具
在当今人工智能领域,提示工程(Prompt Engineering)已成为释放大语言模型(LLM)潜能的关键技术。随着LLM规模和能力的不断增长,如何设计高效、精确的提示词成为研究和应用的焦点。然而,传统的手工提示工程面临着巨大挑战
463 0
|
8月前
|
人工智能 供应链 数据可视化
工作流梳理工具实战教程:手把手教你绘制第一张自动化流程图
本文剖析了团队因流程混乱导致重复劳动和效率低下的问题,提出通过工作流梳理提升协作效率的解决方案。总结了流程梳理的六大核心需求,并深度测评了6款主流工具,国内有板栗看板那,国外有kiss flow结合团队规模与需求提供选型建议,助力企业高效落地流程优化。
|
7月前
|
安全 搜索推荐 机器人
风险规则引擎-RPA 作为自动化依赖业务决策流程的强大工具
机器人流程自动化(RPA)是一种通过软件“机器人”自动执行重复性任务的技术,能大幅提升工作效率。它适用于财务、电商等领域的标准化流程,如账单处理和退货管理。然而,RPA在复杂决策场景中存在局限,需结合决策模型(DMN)和业务规则管理系统(BRMS)实现流程与决策的协同自动化,从而增强灵活性与业务价值。
|
8月前
|
数据采集 运维 监控

热门文章

最新文章