當前位置:
首頁 > 最新 > 記一次 XCTestWD 試用的情況,與 WDA 的對比

記一次 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不能跨應用操作。


喜歡這篇文章嗎?立刻分享出去讓更多人知道吧!

本站內容充實豐富,博大精深,小編精選每日熱門資訊,隨時更新,點擊「搶先收到最新資訊」瀏覽吧!


請您繼續閱讀更多來自 TesterHome 的精彩文章:

自己寫的 mock 管理平台 simple
持續交付實踐-pipeline 使用之 MultiBranch Pipeline
自動遍歷器 NoSmoke 發布公測
pipeline:pipeline 使用之快速入門
腦洞小開-selenium,動態運行日常調試代碼

TAG:TesterHome |