記一次 XCTestWD 試用的情況,與 WDA 的對比
最近做了iOS遠程真機的項目,使用ios-minicap + WDA來實現回顯和操作。聽說xctestWD功能要比WDA更穩定更快捷,於是進行了搭建使用,來評估是否應該把底層操作模塊用XCTestWD來實現。
試用步驟:
1,從github下載源碼進行編譯,與WDA類似,其中遇到了一些坑,後面還是想辦法解決了。
2,試用Xcode build 命令啟動XCTestWD,給我感覺就是特別慢。後續掐表進行計算,WDA啟動時間為11秒,XCTestWD啟動時間為26秒……我的天!測了幾次數據都區別不大,都是這個啟動時間。
3,試用了XCTestWD的截圖速度,論壇上很多人都說截圖速度快,我試了一下,的確比WDA快一些。時間小於0.5秒,wda大概需要1秒。
4,找了很多地方都沒有找到XCTestWD的介面的說明,只能通過查看源碼來判斷它的web介面與WDA的區別。主要查看XCTestWD/XCTestWD/XCTestWDUITests/server/controllers目錄下的各種.swift文件,比如在XCTestWDElementController.swift中可以看到以下代碼:
看到大部分的url與WDA的介面url對比,就是多了個前綴/wd/hub。另外有些地方WDA的url中還需要/wda/,而此處沒有了。
5,使用curl命令建立一個session,打開了ios中的設置 app:
手機上的響應很快,小與0.5秒就執行了打開設置App的操作,但是curl命令返回花了較多的時間:
可以看到iproxy中報了一個錯誤,暫時不太清楚是什麼原因,可能是我使用iproxy的方式錯了xctestwd應該用別的工具做代理?:
6,使用點擊步驟使用curl -X GET http://localhost:8200/wd/hub/sessions 命令獲取 sessionId後,使用下面的命令點擊:
使用點擊步驟,手機上的響應速度與WDA基本一樣。值得一提的是,如果我手動打開手機上的另一個App,tap步驟就會報錯,XCUITestWD就會掛掉重啟,日誌如下:
6,經過進一步測試,發現只要我這個sessionId是通過打開某個App來啟動的,那麼只能在這個App或者系統自帶的頁面(如撥號頁面)可以進行點擊,如果跨App進行操作,XCTestWD就會掛掉。由此可見建立的session是App相關的。但是!如果我隨便填一個不存在的sessionId,那麼在哪個應用中都可以進行點擊,並不會報錯T0T~~,例如下面的命令就可以在任何App中成功點擊坐標:
上面我的sessionID填了一個1。。。
7,在XCTestWD啟動的時候啟動iOS-minicap,發現同樣也會掛掉,與WDA存在一樣的問題。
結論:
1,XCTestWD的啟動時間實在太慢,是WDA啟動時間的兩倍還多!就基於這一點我取消了替換WDA的想法~
2,點擊、獲取截圖操作,時間花費與WDA相差不大,沒有明顯優勢。
3,session的處理上與WDA不太一樣,session不存在的時候也能進行操作,但是對於已存在的sesssion不能跨應用操作。
※自己寫的 mock 管理平台 simple
※持續交付實踐-pipeline 使用之 MultiBranch Pipeline
※自動遍歷器 NoSmoke 發布公測
※pipeline:pipeline 使用之快速入門
※腦洞小開-selenium,動態運行日常調試代碼
TAG:TesterHome |