上期回顧:airtestIDE連接模擬器及常見問題
以下基於
python3.8;airtestIDE1.2.9;airtest1.1.10;pocoui1.0.82
xcode12.4;iOS14.4
前言
先說一句,想做好iOS的自動化,必備一台MAC。雖然現在阿里開源的tidevice后期可以脫離MAC,但一些前期的步驟還是需要MAC,你不可能隨時隨地借開發的MAC本調試吧。
WebDriverAgent是由Facebook開發的一套開源框架,用於端對端的UI測試,能同時支持模擬器和真機。
airtestIDE的iOS-Tagent是基於 facebook 的 WebDriverAgent進行開發的,提供iOS平台的測試支持,在原項目的基礎上進行了定制化的優化和功能調整。
airtest截止2021.4.1支持到最新的iOS、Xcode。如果將來你看到本篇文章,也許那時候版本會出現不匹配的問題,也沒關系,等airtest官方更新即可。
Airtest連接iOS真機測試
(一)iOS-Tagent
使用iOS-Tagent在手機上創建一個WebDriver服務器,可用於遠程控制iOS設備,定位UI元素。
1.下載 iOS-Tagent 到本地電腦
git clone git@github.com:AirtestProject/iOS-Tagent.git
2.使用Xcode打開 iOS-Tagent, 用數據線連接iPhone至Mac
連接iPhone后,在iPhone設備上彈出的“是否信任Mac設備”,選擇信任
選擇項目,在菜單欄 product -> Scheme -> WebDriverAgentRunner
選擇設備,在菜單欄 product -> Destination -> 選擇你的真機
3.使用蘋果賬號或蘋果開發者賬號,登錄Xcode,並注冊真機設備
(1) 左側導航欄,選擇 WebDriverAgentRunner -> TARGETS -> WebDriverAgentRunner -> Signing & Capabilities -> Team
(2) 選擇 Team -> Add an Account -> 登錄蘋果賬號(個人免費或開發者賬號)
(3) 選擇 TARGETS -> WebDriverAgentRunner -> Build Settings -> Basic
(4) 雙擊 Product Bundle Identifier值,填寫一個屬於自己獨一無二的字串
(5) 回到上文提過的Signing & Capabilities界面,查看有無報錯
無報錯,則繼續;若有報錯,查看常見問題:
https://github.com/AirtestProject/iOS-Tagent/blob/master/Introduction/question_zh.md
4.啟動Test,在菜單欄 product -> Test。xcode會編譯WebDriverAgent並安裝到手機上。當你看到這樣的日志的時候,代表 iOS-Tagent 已經啟動成功了
Test Suite 'All tests' started at 2017-01-23 15:49:12.585 Test Suite 'WebDriverAgentRunner.xctest' started at 2017-01-23 15:49:12.586 Test Suite 'UITestingUITests' started at 2017-01-23 15:49:12.587 Test Case '-[UITestingUITests testRunner]' started. t = 0.00s Start Test at 2017-01-23 15:49:12.588 t = 0.00s Set Up
過程中,Xcode可能會請求密碼權限或其他權限 —> 全部允許 —> 不要拒絕,拒絕可能會帶來奇妙的異常。
以防萬一,再手動去蘋果手機的設置—>通用—>描述文件與設備管理—>找到WebDriverAgentRunner,如果沒有信任,點擊信任
(二)設置代理
1.iproxy是usbmuxd附帶的一個小工具,它的作用是將設備的某個端口映射到電腦的某個端口。安裝命令:
brew install libimobiledevice --HEAD
2.運行iproxy
$ iproxy 8100 8100
上面這條命令的意思就是將手機的8100端口,映射到電腦的8100端口上。這樣我們就能通過訪問電腦的8100端口來訪問到手機了。
從圖中可以看到,當有訪問端口時,會有相應日志打印出來。
啟動成功后,可以試着在瀏覽器訪問 http://127.0.0.1:8100/status ,如果訪問成功並且可以看到一些json格式的手機信息,即表示啟動成功。此時,訪問 http://127.0.0.1:8100/inspector 可以看到iPhone屏幕投影在瀏覽器上。
(三)airtestIDE連接iphone
在AirtestIDE的iOS地址欄填入地址 http://127.0.0.1:8100 ,點擊 “connect” 連接設備,可以看到airtestIDE連上iphone並能看見&操作其屏幕了。
在airtestIDE左下的‘poco輔助窗’選擇‘iOS’,可以看到iphone上的元素控件,可以使用poco框架編寫自動化。
如果要使用iOS的Unity Poco的話,還要另外映射一個端口:
$ iproxy 5001 5001
之前的8100端口用於連接iOS手機,這里的5001端口用於連接poco-sdk的rpc端口。
開完2個端口映射,並在airtestIDE里連上iphone后,進入游戲(需要事先接入Poco SDK),在‘poco輔助窗’選擇‘Unity’,就可以看到游戲的元素控件了。
(四)使用Appium的WebDriverAgent連接真機
上面介紹了用airtest的iOS-Tagent連接真機,但因為airtest官方更新較慢,如果遇到版本不匹配的問題,現在也支持使用Appium的WebDriverAgent連接真機。Appium的WebDriverAgent也是基於facebook的WebDriverAgent開發的,其更新速度很快。
Appium的WebDriverAgent搭建過程與iOS-Tagent非常相似,只不過Xcode中要設置兩個TARGETS:WebDriverAgentLib、WebDriverAgentRunner
1.下載源碼
git clone https://github.com/appium/WebDriverAgent
2.使用Xcode打開工程
同iOS-Tagent第3步的設置,分別給WebDriverAgentLib、WebDriverAgentRunner設置Team
和Product Bundle Identifier
。
注意如果2個TARGETS的Team上邊的選項Automatically manage signing
如果沒有勾選,則選中
3.設置代理並連接
在Xcode里product -> Test成功后,在命令行輸入iproxy 8100 8100
,就可以去airtestIDE里連接了。
---------------------------------------------------------------------------------
關注微信公眾號即可在手機上查閱,並可接收更多測試分享~