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


轉載:https://airtest.doc.io.netease.com/tutorial/0_automated_testing/

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

6.1 iOS自動化測試


Airtest支持iOS自動化測試,在Mac上為iOS手機部署iOS-Tagent之后,就可以使用AirtestIDE連接設備,像連接安卓設備一樣,實時投影、控制手機。iOS測試不僅限於真機測試,iOS模擬器也可以進行。Mac端上部署完成后,還可以提供給同一局域網內的Windows遠程連接使用。同時支持Airtest圖像識別和Poco UI檢索。

本文介紹iOS自動化測試的部署過程,提供一個簡單的測試腳本,列舉了iOS測試過程中常見的問題。

6.1.1 功能支持

  • 支持AirtestIDE連接,實時控制iPhone
  • 支持基本操作,如:啟動App、點擊、滑動、輸入、截圖等操作
  • 支持控件檢索技術Poco和圖像識別
  • 支持自動化腳本錄制、一鍵回放、報告查看等基本功能
  • 支持真機或者模擬器



6.2 安裝部署


版本需求:

  • Mac Xcode ≥ 9.3
  • iPhone iOS ≥ 9.3
  • 在 9.3≤iOS≤10時,由於基於舊版Xcode SDK,建議使用Xcode 版本≤10.1來啟動iOS-Tagent,否則會出現手機截屏不全的問題。

6.2.1 部署流程

iproxy是usbmuxd附帶的一個小工具,它的作用是將設備的某個端口映射到電腦的某個端口。Mac下可以通過brew安裝brew install usbmuxd。

iproxy 8100 8100意思就是將手機的8100端口,映射到電腦的8100端口上。這樣我們就能通過訪問電腦的8100端口來訪問手機了。

  • 在Airtest IDE的設備窗口,輸入地址:http://127.0.0.1:8100或 http://x.x.x.x(MAC IP):8100:

點擊Connect按鈕即可連接iOS設備,如圖:

6.2.2 支持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 

6.2.3 支持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:




6.3 開始測試


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))) 




6.4 常見問題


(1)如何在模擬器中安裝應用
* 把xx.ipa 改成xx.zip,解壓得到xx.app
* 打開模擬器,在終端運行 xcrun simctl install booted xx.app
**tips**:不可以把真機App包安裝在iOS模擬器上,真機的App是基於Arm的,而模擬器是運行在X86指令集上的,強行安裝會導致閃退的問題。

(2)如何進行iOS多機測試 

  • 目前暫未開放iOS多機測試功能,敬請期待。

(3)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:暫未支持


免責聲明!

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



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