airtestIDE連接iOS真機


上期回顧: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設置TeamProduct Bundle Identifier
注意如果2個TARGETS的Team上邊的選項Automatically manage signing如果沒有勾選,則選中

 

 

3.設置代理並連接
在Xcode里product -> Test成功后,在命令行輸入iproxy 8100 8100,就可以去airtestIDE里連接了。

 

---------------------------------------------------------------------------------

關注微信公眾號即可在手機上查閱,並可接收更多測試分享~


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM