阿里最強 Python 自動化工具開源了!
1. 前言
大家好,我是安果!
最近,阿里內(nèi)部開源了一個 iOS 端由 Python 編寫的自動化工具,即:tidevice
它是一款跨平臺的自動化開源工具,不依賴 Xcode 就可以啟動 WebDriverAgent( WDA ),這也就意味著 Windows 可以直接運行 iOS 自動化腳本
項目地址:
https://github.com/alibaba/taobao-iphone-device
2. 準(zhǔn)備
進入到虛擬環(huán)境,先安裝 tidevice 的依賴包
- # 安裝依賴包
 - pip3 install -U "tidevice[openssl]"
 - # 查看tidevice版本,檢查是否安裝成功
 - tidevice version
 
3. 常見功能
將 iPhone 設(shè)備連接到電腦上,就可以使用 tidevice 提供的功能了
3-1 查看設(shè)備列表
- # 二選一
 - tidevice list
 - # json數(shù)據(jù)顯示
 - tidevice list --json
 
3-2 安裝、卸載應(yīng)用
安裝對應(yīng)的關(guān)鍵字為:「 install 」
tidevice 同時支持安裝本地 ipa 包和遠鏈下的 ipa 應(yīng)用包
另外,tidevice 可以使用「 --udid 」參數(shù)將應(yīng)用安裝到某一臺設(shè)備中
- # 安裝本地應(yīng)用
 - tidevice install example.ipa
 - # 根據(jù)udid參數(shù),指定設(shè)備安裝應(yīng)用
 - tidevice --udid $UDID install https://example.org/example.ipa
 - tidevice install https://.....ipa
 
卸載對應(yīng)的關(guān)鍵字為:「 uninstall 」
通過應(yīng)用包名可以卸載設(shè)備上的某一個應(yīng)用
- # 卸載應(yīng)用(通過包名)
 - # 比如:知識星球App包名為:com.unnoo.quan
 - tidevice uninstall com.unnoo.quan
 
3-3 啟動、關(guān)閉應(yīng)用
啟動應(yīng)用對應(yīng)的關(guān)鍵字為:「 launch 」
關(guān)閉應(yīng)用對應(yīng)的關(guān)鍵字為:「 kill 」
- # 打開應(yīng)用
 - tidevice launch com.unnoo.quan
 - # 停止殺死應(yīng)用
 - tidevice kill com.unnoo.quan
 
3-4 已安裝應(yīng)用及名稱、版本
使用「 tidevice applist 」命令,可以查看設(shè)備上已經(jīng)安裝的應(yīng)用、應(yīng)用名稱、應(yīng)用版本號
- # 查看設(shè)備應(yīng)用信息列表
 - localhost:tidevice_demo xingag$ tidevice applist
 - com.tencent.xin WeChat 8.0.2
 - com.ss.iphone.ugc.Aweme 抖音 13.4.0
 - com.tencent.mttlite QQ瀏覽器 10.8.3
 - com.panasonic.jp.imageapp Image App 1.10.17
 - com.unnoo.quan 知識星球 4.20.2
 - co.visualsupply.cam VSCO 189
 - com.ucweb.iphone.lowversion UC瀏覽器 13.1.5
 - com.niksoftware.snapseedforipad Snapseed 2.19.5
 - com.autonavi.amap 高德地圖 10.76.0
 - com.lagou.education 拉勾教育 1.4.9
 - com.xunmeng.pinduoduo 拼多多 5.37.0
 - com.tencent.QQMusic QQ音樂 10.5.5
 - io.ideamp.feelcab Feelca B 1.6.0
 - com.chinaunicom.mobilebusiness 手機營業(yè)廳 8.00.01
 - com.feiyu-tech.vico Vicool 1.2.26
 - com.ss.iphone.article.News 今日頭條 7.9.3
 - com.sogou.sogouinput 搜狗輸入法 10.18.1
 - org.geekbang.GeekTime 極客時間 2.9.2
 - com.burbn.hyperlapse Hyperlapse 1.3.4
 - com.apple.itunesu iTunes U 3.8
 
3-5 設(shè)備信息
利用「 tidevice info 」可以查看設(shè)備信息,比如:設(shè)備序列號、系統(tǒng)版本、CPU、本機號碼、時間戳、藍牙地址、MAC 地址等信息
- # 查看設(shè)備信息
 - localhost:~ xingag$ tidevice info
 - MarketName: iPhone SE (1st generation)
 - DeviceName: xingag
 - ProductVersion: 14.4
 - ProductType: iPhone8,4
 - ModelNumber: MP892
 - SerialNumber: ...
 - CPUArchitecture: arm64
 - ProductName: iPhone OS
 - ProtocolVersion: 2
 - RegionInfo: ZP/A
 - TimeIntervalSince1970: 1616979424.235399
 - TimeZone: Asia/Shanghai
 - WiFiAddress: 58:e2:8f:68:4c:b0
 - BluetoothAddress: 58:e2:8f:68:4c:b1
 - BasebandVersion: 10.40.01
 - ...
 
如果要查看設(shè)備的電池信息,可以使用關(guān)鍵字 「 --domain + 應(yīng)用包名 」來獲取
- # 查看設(shè)備電池信息
 - localhost:~ xingag$ tidevice info --domain com.apple.mobile.battery --json
 - {
 - "BatteryCurrentCapacity": 54,
 - "BatteryIsCharging": true,
 - "ExternalChargeCapable": true,
 - "ExternalConnected": true,
 - "FullyCharged": false,
 - "GasGaugeCapability": true,
 - "HasBattery": true
 - }
 
3-6 重啟及截圖
重啟對應(yīng)的關(guān)鍵字為:「 reboot 」
截圖對應(yīng)的關(guān)鍵字為:「 screenshot 」
- # 重啟設(shè)備
 - tidevice reboot
 - # 截圖并保存到文件 screenshot.jpg 中
 - tidevice screenshot screenshot.jpg
 
3-7 系統(tǒng)日志及更多幫助
查看系統(tǒng)日志的命令為:「 tidevice syslog 」,當(dāng)然也可以配置 grep 參數(shù)進行過濾
- # 查看系統(tǒng)日志
 - tidevice syslog
 - # 更多幫助
 - tidevice -h
 
4. 自動化步驟
要完成 iOS 端的自動化,我們還需要做一些準(zhǔn)備工作
4-1 安裝 WDA
我們需要將 WebDriverAgent 安裝到 iOS 設(shè)備上,通過它驅(qū)動手機進行一系列自動化操作
PS:由于 Facebook WDA 很長時間沒有更新了,這里建議直接使用 Appium WDA
https://github.com/appium/WebDriverAgent
下載項目后,使用 Xcode 打開,Scheme 選擇 WebDriverAgentRunner,設(shè)備選擇真機
然后配置開發(fā)者證書,可以參考下面鏈接進行配置
https://testerhome.com/topics/7220
最后,Xcode 選擇 Project 下的 Test 將項目運行到真機設(shè)備上
注意:第一次運行 WDA 可能運行失敗,需要手動在設(shè)置中對證書添加信任
4-2 運行 WDA
真機設(shè)備安裝完 WDA 后,就可以脫離 Mac,使用 Windows 進行自動化操作了
使用「 tidevice wdaproxy 」命令可以運行 WDA 和端口轉(zhuǎn)發(fā)
- # 運行 WDA
 - # 端口轉(zhuǎn)發(fā)到8100
 - # 應(yīng)用包名:com.facebook.WebDriverAgentRunner.xingag23.xctrunner
 - idevice wdaproxy -B com.facebook.WebDriverAgentRunner.xingag23.xctrunner --port 8100
 
PS:由于 Xcode 設(shè)置證書的時候,更改過 bundle_id,所以這里的包名是一個變量
4-3 編寫自動化腳本
接下來,就可以使用 Appium 或 facebook-wda 編寫腳本并運行到 iOS 設(shè)備上了
以 facebook-wda 為例
首先,我們安裝對應(yīng)的依賴
- # 安裝facebook-wda依賴
 - pip3 install -U facebook-wda
 
接著,編寫自動化腳本并運行測試
- import wda
 - import time
 - # 連接設(shè)備
 - c1 = wda.USBClient()
 - # c1 = wda.Client("http://10.3.209.175:8100")
 - print(c.info)
 - # 極客時間
 - bundle_id = 'org.geekbang.GeekTime'
 - # 通過app的bundleId啟動App
 - s = c1.session(bundle_id)
 - # 休眠5s
 - s.sleep(5)
 - # 截圖保存到本地
 - c1.screenshot('sc.png')
 - # 回到桌面
 - s.home()
 
5. 最后
阿里這款 iOS 端自動化工具的主要優(yōu)點是啟動速度快,內(nèi)存占用低;更重要的是,它是跨平臺,穩(wěn)定性相對較高















 
 
 






 
 
 
 