一、前言大家好,我是安国!近期,阿里内部在iOS端开源了一个用Python编写的自动化工具,即:tidevice,它是一个跨平台的自动化开源工具,可以不依赖Xcode启动WebDriverAgent(WDA),也就是说Windows可以直接运行iOS自动化脚本项目地址:https://github.com/alibaba/taobao-iphone-device2。进入虚拟环境,首先安装tidevice的依赖包#安装依赖包pip3install-U"tidevice[openssl]"#查看tidevice版本,查看是否安装成功。tideviceversion3.常用功能将iPhone设备连接到电脑,即可使用tidevice提供的功能。应用安装对应的关键字是:"install"tidevice既支持本地ipa包的安装,也支持远程链接下ipa应用包的安装。另外,tidevice可以使用“--udid”参数将应用安装到某个设备#安装本地应用tideviceinstallexample.ipa#根据udid参数,指定设备安装应用tideevice--udid$UDIDinstallhttps:///example.org/example.ipatideviceinstallhttps://.....ipa对应的卸载关键字是:"uninstall"通过应用包名可以卸载设备上的一个应用#卸载应用(按包名)#For示例:知识星球App包名:com.unnoo.quantideviceuninstallcom.unnoo.quan3-3启动和关闭应用程序启动应用程序对应的关键字是:launch对应的关闭应用程序的关键字是:kill#打开应用tidevicelaunchcom.unnoo.quan#停止kill应用tidevicekillcom.unnoo.quan3-4已安装的应用、名称和版本可以使用“tideviceapplist”命令查看设备上安装的应用,appname,应用程序版本号#ViewDevice应用信息列表localhost:tidevice_demoxingag$tideviceapplistcom.tencent.xinWeChat8.0.2com.ss.iphone.ugc.Aweme抖音13.4.0com.tencent.mttliteQQbrowser10.8.3com.panasonic.jp.imageappImageApp1.10.17com.unnoo.全知识星球4.20.2co.visualsupply.camVSCO189com.ucweb.iphone.lowversionUC浏览器13.1.5com.niksoftware.snapseedforipadSnapseed2.19.5com.autonavi.amap高德地图10.76.0com.lagou.education拉勾教育1.4.9com.xunmeng.pinduoduo.3.Pinduoduo5.0com.tencent.QQMusicQQ音乐10.5.5io.ideamp.feelcabFeelcaB1.6.0com.chinaunicom.mobilebusiness移动营业厅8.00.01com.feiyu-tech.vicoVicool1.2.26com.ss.iphone.article.NewsTodayToutiao7.9.3com.sogou.sogouinput搜狗输入法10.18.1org.geekbang.GeekTime极客时间2.9.2com.burbn.hyperlapseHyperlapse1.3.4com.apple.itunesuiTunesU3.83-5设备信息使用“tideviceinfo”查看设备信息,如:设备序列号,系统版本,CPU,本机号,时间戳,蓝牙地址,MAC地址等信息#查看设备信息localhost:~xingag$tideviceinfoMarketName:iPhoneSE(1stgeneration)DeviceName:xingagProductVersion:14.4ProductType:iPhone8,4ModelNumber:MP892SerialNumber:...CPU架构:arm64产品名称:iPhoneOSProtocolVersion:2RegionInfo:ZP/ATimeIntervalSince1970:1616979424.235399TimeZone:Asia/ShanghaiWiFiAddress:58:e2:8f:68:4c:b0BluetoothAddress:58:e2:8f:68:4c:b1BasebandVersion:10.40.01...电池信息,你可以使用关键字“--domain+applicationpackagename”获取#Viewdevicebatteryinformationlocalhost:~xingag$tideviceinfo--domaincom.apple.mobile.battery--json{"BatteryCurrentCapacity":54,"BatteryIsCharging":true,"ExternalChargeCapable":true,"ExternalConnected":true,"FullyCharged":false,"GasGaugeCapability":true,"HasBattery":true}3-6重启和截图重启对应的关键词是:"reboot"对应的关键词截图是:"screenshot"#复制设备tidevicereboot#截图保存在文件screenshot.jpgtidevicescreenshotscreenshot.jpg3-7系统日志和更多帮助查看系统日志的命令当然是:"tidevicesyslog"你也可以配置grep参数来过滤#查看系统日志tidevicesyslog#更多帮助tideevice-h4。自动化步骤要完成iOS端的自动化,我们还需要做一些准备工作4-1安装WDA我们需要在iOS设备上安装WebDriverAgent,通过它驱动手机进行一系列的自动化操作PS:由于FacebookWDA好久没更新了,推荐直接使用AppiumWDAhttps://github.com/appium/WebDriverAgent下载好项目后,使用Xcode打开,Scheme选择WebDriverAgentRunner,device选择realdevice然后配置开发者证书,可以参考以下链接配置https://testerhome.com/topics/7220最后,在Xcode中选择Project下的Test,将项目转移到真机上运行注意:第一次运行WDA可能会失败,需要在设置中手动对证书添加信任4-2在真机上运行WDA安装完WDA后在真实设备上,你可以离开Mac,使用Windows进行自动化操作使用“tidevicewdaproxy”命令运行WDA和端口转发#运行WDA#端口转发到8100#App包名:com.facebook.WebDriverAgentRunner.xingag23。xctrunneridedevicewdaproxy-Bcom.facebook.WebDriverAgentRunner.xingag23.xctrunner--port8100PS:由于Xcode在设置证书的时候更改了bundle_id,所以这里的包名是一个变量4-3编写自动化脚本接下来可以使用Appium或facebook-wda编写脚本并在iOS设备上运行它们。先以facebook-wda为例,我们安装对应的依赖#安装facebook-wda依赖pip3install-Ufacebook-wda然后写一个自动化脚本运行测试importwdaimporttime#connectdevicec1=wda.USBClient()#c1=wda.Client("http://10.3.209.175:8100")print(c.info)#极客时间bundle_id='org.geekbang.GeekTime'#通过app的bundleId=c1.session(bundle_id)启动App#Sleep5ss.sleep(5)#保存截图到本地c1.screenshot('sc.png')#回到桌面s.home()5.最后,阿里iOS端自动化工具的主要优点是启动速度快,内存使用率低;更重要的是,它是跨平台的,稳定性比较高
