6、如何在iOS手機上進行自動化測試

閱讀本文,你將瞭解

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源創計劃」,歡迎正在閱讀的你也加入,一塊兒分享。

相關文章
相關標籤/搜索