一般来说搞iOS手机的APP自动化需通过Mac电脑,但当前APP出图自动化测试平台是基于windows系统环境开发。如果因iOS APP需要再重新搭建Mac的开发及测试环境,会很大程度上浪费资源,增加开发、维护的难度。因此,经多方预研究发现阿里开源的用python编写的tidevice可以跨平台实现iOS自动化,今天我们就一起来学习、揭秘tidevice。
一、安装
tidevice是用 Python 写的,依赖 Python3.6+,我们当前使用的Python3.7,完美契合。安装方法和一般的python第三库一致,如下:
pip3 install -U "tidevice[openssl]"
安装完成后,可通过tidevice -v 验证安装是否成功。
注:Windows电脑需要安装并启动Itunes
二、使用
列出连接设备:tidevice list
应用管理:
# 安装应用 $ tidevice install ezview.ipa # 指定设备安装 $ tidevice --udid $UDID install https://example.org/example.ipa # 卸载应用 $ tidevice uninstall com.uniview.app.smb.phone.ezview # 启动应用 $ tidevice launch com.uniview.app.smb.phone.ezview # 停止应用 $ tidevice kill com.uniview.app.smb.phone.ezview # 查看已安装应用 $ tidevice applist # 查看运行中的应用 $ tidevice ps $ tidevice ps --json output as json
查看设备信息:tidevice info
文件操作:
# 查看相册内容 $ tidevice fsync /DCIM/ # 查看T3出行Documents中的内容 $ tidevice fsync -B com.t3go.passenger ls /Documents/ # 下载目录(也支持文件) $ tidevice pull /Documents ./TmpDocuments/ # 其他操作 rm cat pull push stat tree rmtree mkdir $ tidevice fsync -h
Crash日志操作:
usage: tidevice crashreport [-h] [--list] [--keep] [--clear] [output_directory] positional arguments: output_directory The output dir to save crash logs synced from device (default: None) optional arguments: -h, --help show this help message and exit --list list all crash files (default: False) --keep copy but do not remove crash reports from device (default: False) --clear clear crash files (default: False)
其他应用:
# 重启 $ tidevice reboot # 截图 $ tidevice screenshot screenshot.jpg # 输出日志 same as idevicesyslog $ tidevice syslog
综上,tidevice支持如下操作:
-
截图
-
获取手机信息
-
ipa包的安装和卸载
-
根据bundleID 启动和停止应用
-
列出安装应用信息
-
模拟Xcode运行XCTest,常用的如启动WebDriverAgent测试(此方法不依赖xcodebuild)
-
获取指定应用性能(CPU,MEM,FPS)
-
获取指定应用功耗(CPU,GPU,network,display,location)
-
文件操作
-
Crash日志操作
-
其他
三、如何连接iOS手机
tidevice连接iOS手机,并非是直接操控手机及手机上安装的app,而是连接WDA(WebDriverAgent),然后通过WDA实现控制APP的一系列操作。所有iOS手机需先安装WDA。tidevice连接iOS手机方式也非常简单,如下:
tidevice -u [设备udid] wdaproxy -B [wda的bundleid] --port 8100
此时,我们也可以在Windows电脑上访问127.0.0.1:8100/status,查看连接状态:
至此,我们就通过windows平台连接上iOS平台,下一节开始讲解如何通过appium如何在iOS自动化中应用。