iOS自動化測試的部署過程
ios
1個簡單的測試腳本示例git
iOS測試過程當中的常見問題github
PS:請識別下方二維碼,用手機瀏覽器打開閱讀,或是直接點擊公衆號文章結尾的「閱讀原文」,用瀏覽器閱讀文檔體驗更佳。PC端請訪問
https://airtest.doc.io.netease.com/web



01windows
前言api
Airtest支持iOS自動化測試,在Mac上爲iOS手機部署iOS-Tagent以後,就可使用AirtestIDE鏈接設備,像鏈接安卓設備同樣,實時投影、控制手機。iOS測試不只限於真機測試,iOS模擬器也能夠進行。Mac端上部署完成後還能夠提供給同一局域網內的windows上遠程鏈接使用。同時支持airtest圖像識別和poco UI檢索。xcode
02瀏覽器
功能支持微信
支持AirtestIDE鏈接,實時控制 iPhoneapp
支持基本操做如啓動app、點擊、滑動、輸入、截圖等等操做
支持控件檢索技術Poco和圖像識別
自動化腳本錄製、一鍵回放、報告查看等基本功能
支持真機或者模擬器
03
安裝部署
版本需求
Mac Xcode ≥ 9.3
iPhone iOS ≥ 9.3
在 9.3≤iOS≤10時,因爲基於舊版xcode SDK,建議使用Xcode 版本≤10.1來啓動iOS-Tagent,不然會出現手機截屏不全的問題。
部署流程
①在Mac下載 iOS-Tagent ,使用 Xcode 啓動 Test
, 具體啓動過程可參考 https://github.com/AirtestProject/iOS-Tagent 。當Xcode的log窗口輸出下圖信息的時候,就意味着部署成功了。
②啓動代理,在命令行下執行iproxy 8100 8100
運行代理後,能夠在瀏覽器打開 http://127.0.0.1:8100/inspector ,查看iOS設備是否能成功鏈接。
iproxy是usbmuxd附帶的一個小工具,它的做用是將設備的某個端口映射到電腦的某個端口。mac下能夠經過brew安裝
brew install usbmuxd
。
iproxy 8100 8100
意思就是將手機的8100端口,映射到電腦的8100端口上。這樣咱們就能經過訪問電腦的8100端口來訪問到手機了。
③在 AirtestIDE 的設備窗口,輸入地址:http://127.0.0.1:8100
或 http://x.x.x.x(MAC IP):8100
:
點擊Connect
按鈕便可鏈接iOS設備,如圖:
支持Xcode中的iOS模擬器
Xcode中的iOS Simulator模擬器部署過程和真機同樣,可是能夠省略步驟2,不須要另外執行proxy。
當Xcode的log窗口看到下面內容的時候,就能夠直接用地址 http://x.x.x.x:8100
進行鏈接了,也就是log裏顯示出來的ServerURLHere
中的地址:
WebDriverAgentRunner-Runner[xxx:xxx] ServerURLHere->http://x.x.x.x:8100<-ServerURLHere
支持Windows鏈接
咱們一樣可以在Windows上鍊接一個遠程的iOS設備,可是依然須要有Mac電腦與Xcode環境。首先按照上文的部署教程在Mac上啓動iOS-Tagent以後,再也不使用iproxy啓動代理,而是改用 wdaproxy。由於iproxy
只支持本機端口的映射,而wdaproxy
可以支持遠程IP映射,這意味着能夠在第二部PC上,經過訪問ip的方式訪問到Mac電腦上鍊接的iOS設備。
經過
brew install openatx/tap/wdaproxy
安裝好wdaproxy
使用方法與
iproxy
一致,wdaproxy 8100 8100
,或者不填寫端口也能夠,默認將會使用8100:
04
開始測試
iOS 的測試和其餘設備差很少,支持圖像識別和UI檢索,下面簡單介紹一個iOS測試例子:
① 鏈接設備
② 點擊home鍵
③ 截屏
④ 執行滑動操做
⑤ 使用poco點擊app Safari
⑥ 使用poco點擊瀏覽器的搜索框,獲取焦點
⑦ 在搜索框輸入「airtest」
⑧ 在搜索頁面往下滑動
⑨ 判斷是否存在airtest官網地址
from airtest.core.api import *
from poco.drivers.ios import iosPoco
poco = iosPoco()
auto_setup(__file__)
connect_device("ios:///x.x.x.x:8100")
keyevent("HOME")
snapshot()
swipe(Template(r"tpl1561985939879.png", record_pos=(0.356, -0.174), resolution=(750.0, 1334.0)), vector=[-0.685, 0.0481])
poco("Safari").click()
poco("URL").click()
text("airtest")
poco("People also search for").swipe([-0.0541, -0.4206])
exists(Template(r"tpl1560844284543.png", record_pos=(-0.292, 0.688), resolution=(750, 1334)))
05
常見問題
如何在模擬器安裝應用
把xx.ipa 改爲xx.zip,解壓獲得xx.app
打開模擬器, 在終端運行
xcrun simctl install booted xx.app
tips: 不能夠把真機 app 包安裝在iOS模擬器上,真機的app是基於arm的,而模擬器是運行在 X86 指令集上的,強行安裝會致使閃退的問題。
如何進行iOS多機測試
目前暫未開放iOS多機測試功能,敬請期待
Api 支持情況
請注意,iOS設備與Android設備有很大的不一樣,如下通用的 Airtest 的 API 在iOS上都是支持的:
start_app: OK
stop_app: OK
snapshot: OK
home: OK
touch: OK
swipe: OK
text: OK
wait: OK
exists: OK
find_all: OK
assert_exists: OK
assert_not_exists: OK
可是如下API是不支持的:
wake: 暫未支持 (考慮用
home
方法替代)keyevent: 只支持
home
事件clear_app: 暫未支持
install: 暫未支持
uninstall: 暫未支持

明天就是中秋佳節啦!
繁忙的工做以後,但願你們能夠停下來休息下
與家人、朋友好好相聚
在這裏AirTest全體成員預祝你們
中秋節快樂!
本文分享自微信公衆號 - AirtestProject(AirtestProject)。
若有侵權,請聯繫 support@oschina.cn 刪除。
本文參與「OSC源創計劃」,歡迎正在閱讀的你也加入,一塊兒分享。