在移動端自動化測試領域,Airtest 以其跨平臺、圖像識別和易用性著稱,為 iOS 應用的測試提供了強大支持。掌握其核心接口,能極大提升測試腳本的編寫效率與穩定性。本文將詳細介紹 Airtest 在 iOS 平臺上的幾個關鍵實用接口,并附上使用建議,建議測試工程師收藏備用。
1. 設備連接與初始化接口:connect_device
這是所有測試的起點。用于連接真實的 iOS 設備或模擬器。`python
from airtest.core.api import connect_device
# 連接本地iOS設備(通過WebDriverAgent)
dev = connect_device("iOS:///127.0.0.1:8100")
# 或使用設備UDID進行指定連接
dev = connect_device("iOS:///http://127.0.0.1:8100?udid=你的設備UDID")`
要點:確保設備已通過 iproxy 完成端口轉發(例如 iproxy 8100 8100),且 WebDriverAgent 已成功安裝并啟動。
2. 元素定位與操作接口:touch, wait, exists
這些是模擬用戶交互的基礎。
- touch:點擊屏幕坐標或圖像識別的目標。
`python
touch((100, 200)) # 點擊絕對坐標
touch(Template("button.png")) # 點擊匹配的圖片元素,推薦此方式,抗UI變化能力更強
`
- wait 與 exists:等待或判斷元素出現。
`python
# 等待“登錄按鈕”出現,超時時間10秒
pos = wait(Template("login_button.png"), timeout=10)
if pos:
touch(pos)
# 快速判斷元素是否存在
if exists(Template("welcome_popup.png")):
touch("close.png")
`
建議:優先使用 Template 圖片識別進行定位,而非絕對坐標,以提高腳本在不同分辨率設備上的復用性。
3. 文本輸入接口:text
用于向輸入框輸入內容,比 keyevent 更直接高效。`python
# 在焦點已位于輸入框時,直接輸入文本
text("Hello Airtest")
# 更常見的組合操作:先點擊輸入框,再輸入
touch(Template("username_field.png"))
text("[email protected]")`
注意:對于某些復雜輸入(如密碼鍵盤),可能需要結合 keyevent 模擬按鍵。
4. 滑動與手勢接口:swipe
模擬滑動操作,常用于列表滾動、頁面切換等場景。`python
# 從坐標(300,800)滑動到(300,400),持續0.5秒
swipe((300, 800), (300, 400), duration=0.5)
# 基于圖像識別結果的滑動(例如從“元素A”滑到“元素B”)
pos1 = wait(Template("itemtop.png"))
pos2 = wait(Template("itembottom.png"))
swipe(pos1, pos2)`
技巧:適當增加 duration 參數值可以使滑動更接近真實用戶操作,避免因滑動過快導致檢測失敗。
5. 斷言與驗證接口:assert<em>exists, assert</em>equal
用于測試結果驗證,是自動化測試的靈魂。`python
# 斷言某個元素必須存在
assertexists(Template("successtoast.png"), "驗證成功提示未出現")
# 結合poco使用,斷言文本內容(需安裝pocoui庫)
from poco.drivers.ios import iosPoco
poco = iosPoco()
assertequal(poco("titleLabel").gettext(), "歡迎頁面", "標題文本不符預期")`
最佳實踐:斷言應清晰明確,失敗信息需能直接定位問題。
6. 關鍵系統操作接口:home, snapshot
home:模擬按下Home鍵,返回桌面。home()snapshot:截取當前屏幕,并自動保存到測試報告。snapshot(msg="登錄后主頁截圖")
7. 封裝與復用:using 與自定義模塊
對于復雜或重復操作,建議進行封裝。`python
# 使用using引入其他公共腳本
using("common_login.air")
# 調用其中封裝好的方法
from common_login import login
login("username", "password")`
與收藏建議
- 環境是前提:穩定連接
WebDriverAgent是 iOS 測試的基礎,務必先確保環境暢通。 - 圖像識別為主:盡量使用
Template進行元素定位,并維護好一套基準截圖。 - 組合使用:將基本接口(
wait->touch->text->assert)組合成業務流。 - 善用報告:關鍵步驟后使用
snapshot(),斷言時填寫清晰信息,讓測試報告一目了然。 - 結合Poco:對于原生應用,強烈建議結合
poco框架進行基于UI層級的精準定位,與圖像識別互補。
通過熟練掌握以上接口,您將能利用 Airtest 高效地構建出穩定、可維護的 iOS 自動化測試腳本,有效覆蓋核心功能回歸與兼容性測試場景。