IOS 自動化環境搭建
xcode配置
https://github.com/appium/WebDriverAgent
-
打開項目,找到WebDriverAgent.xcodeproj,雙擊打開
-
配置開發者賬號,自己的AppleID也可以
打開code配置
新增賬號
選擇AppleID
添加自己的AppleID當開發者賬號使用
找到配置文件
選擇自己的開發者賬號
找到要編譯的報名修改
修改編譯的包ID,需要區分,不然會報錯
選擇編譯的項目
選擇自己的手機
編譯
成功之后,需要等會,直到手機出來webdriveragentrunner圖標
如果編譯需要輸入登錄密碼,這個密碼是電腦的登錄密碼,不是AppleID的密碼,如果輸入后無效,往下看
打開鑰匙串,找到Apple Apple Development,選擇始終信任,輸入電腦登錄密碼,然后再打開這個,改回使用系統默認,再次輸入電腦登錄密碼。然后再進行編譯(懷疑是xcode的bug)
原理:通過iOS手機上的webdriveragent在手機上通信,使用過tidevice啟動webdriveragent,通過HTTP的方式,然后使用封裝好的wda框架,對APP進行點擊等操作,和Android 的atx原理一致
macaca 查看元素:https://www.jianshu.com/p/2ec6f0a1f45a
-
需要一個iOS手機,並安裝webdriveragent---(找鵬龍裝,還需要找iOS開發把手機uuid加入到到公司的開發者賬號里面)
-
安裝阿里雲第三方Python包,通過這個包,可以不需要Mac電腦,只需要有Python環境即可:https://github.com/alibaba/taobao-iphone-device
Python3.7+
pip3 install -U tidevice
tidevice version 安裝后查看版本號
啟動webdriveragent
tidevice wdaproxy -B com.julive.WebDriverAgentRunner.xctrunner --port 8200
參數說明:第一個參數是我們用的包,類似pip
第二個參數包涵了兩個命令:Run XCTest和Relay,run xctest 相當啟動webdriver,relay做端口轉發,從手機上的端口轉發到電腦上的端口
第三個參數-B 系統參數,類似於有這個參數知道后面還有其他參數
第四個參數 com.julive.WebDriverAgentRunner.xctrunner這是通過xcode打的一個iOS應用,到時候會通過這個應用通信, --port 8200 端口號,默認從手機的8200端口轉發到電腦上的8200端口,需要用自己手機上的包名,不是同一個人打包的,報名也不一樣
如下表示啟動成功。
通過瀏覽器訪問:http://localhost:8200/ 能訪問即可
-
啟動實例
啟動實例我們使用facebook-wda,https://github.com/openatx/facebook-wda
wda 是atx的衍生產品,和Android的atx同源,非Facebook官方項目,這里可以不用appium了
import time
import wda
c = wda.Client("http://localhost:8200/") # 連接
print(c.status) # 打印狀態
with c.session('com.netease.cloudmusic') as s: # 打開APP
time.sleep(10)
print(s.orientation)
s(text='我的').tap() # 點擊
time.sleep(3)
s(text='播客').get().value # 獲取value
print(s(text="播客").exists) # 判斷元素是否存在
time.sleep(3)
e = s(text='雲村').get(timeout=10.0) # 找元素,等10秒
time.sleep(3)
e.tap() # 找到后點擊
time.sleep(5)
4.常用命令
tidevice list 列出連接設備
# 安裝應用 $ tidevice install example.ipa
# 指定設備安裝 $ tidevice --udid $UDID install https://example.org/example.ipa
# 卸載應用 $ tidevice uninstall com.example.demo
# 啟動應用 $ tidevice launch com.example.demo
# 停止應用 $ tidevice kill com.example.demo
# 查看已安裝應用 $ tidevice applist