Airtest封裝的Tidevice介面有多好用(一)

AirtestProject發表於2024-07-18

此文章來源於專案官方公眾號:“AirtestProject”
版權宣告:允許轉載,但轉載必須保留原連結;請勿用作商業或者非法用途

一、前言

很多同學都有在Windows電腦上連線本地iOS裝置去進行測試的需求,其中tidevice庫是大家在Windows上使用的最多的iOS通訊庫,其中有一些介面是我們比較常用的,所以Airtest這邊對一些常用的介面進行了封裝,供大家日常寫指令碼的時候去進行呼叫。那麼我們今天一起來看一下Airtest封裝的一些介面吧~

二、Airtest封裝的Tidevice介面

2.1 devices() :列出USB連線的所有裝置的 UDID 列表

這個介面可以將本地中透過usb連線的所有iOS裝置的UDID列表返回出來。

devices = TIDevice.devices()
print(devices)

2.2 device_info(udid) :獲取手機資訊

透過輸入udid去進行檢索裝置,並將檢索到的裝置資訊返回輸出,其中包括下述內容:

  • productVersion(str):產品的版本。
  • productType(str):產品的型別。
  • modelNumber(str):裝置的型號。
  • serialNumber(str):裝置的序列號。
  • phoneNumber(str):與裝置關聯的電話號碼。
  • timeZone(str):裝置的時區。
  • uniqueDeviceID(str):裝置的唯一識別符號。
  • marketName(str):裝置的市場名稱。
from airtest.core.ios.ios import TIDevice
print(TIDevice.device_info(udid))

2.3 list_wda(udid) :列出手機上安裝的所有WDAbundleID

透過該介面可以在符合特定命名規則的裝置上獲取該裝置的所有 WDA,並返回每個WDA包名,預設是返回TIDevice.list_wda(udid)[0]

from airtest.core.ios.ios import TIDevice
print(TIDevice.list_wda(udid))

2.4 ps_wda(udid) :獲取當前啟動中的WDA列表

獲取滿足特定命名規則的裝置上所有正在執行的 WDA,並返回每個WDA包名,預設是返回TIDevice.list_wda(udid)[0]

from airtest.core.ios.ios import TIDevice
print(TIDevice.ps_wda(udid))

2.5 xctest(wda_bundle_id):啟動WDA

透過該介面可以啟動指定的WDA,透過傳入WDA的指定包名,呼叫介面即可開啟對應的WDA

from airtest.core.ios.ios import TIDevice
import threading
wda_bundle_id = TIDevice.list_wda(udid)[0]
# 建立一個執行緒,執行xctest
t = threading.Thread(target=TIDevice.xctest, args=(udid, wda_bundle_id), daemon=True)
t.start()
time.sleep(5)
ps_wda = TIDevice.ps_wda(udid)
print(ps_wda)
time.sleep(5)
# 終止執行緒
t.join(timeout=3)

三、完整演示案例

結合上面的樣例,我們透過一個小小的例子來看一下具體使用的情況是怎麼樣的。

我們這邊是先開啟AirtestIDE連線上我們所需要測試的iOS裝置,連線上裝置後,我們先是讀取並輸出了所連線裝置的UDID,裝置資訊等內容,然後讀取並輸出連線的iOS裝置所安裝的全部WDA,並啟動第一個WDA,將當前在使用的WDA進行輸出可以看到WDA包名是相對應的,最後直接關閉WDA服務。

參考程式碼如下:

# -*- encoding=utf8 -*-
__author__ = "Airtest"

from airtest.core.api import *
from airtest.core.ios.ios import TIDevice
import threading
auto_setup(__file__)

#輸出電腦所連線的iOS裝置udid
devices = TIDevice.devices()
print("電腦上連線的iOS裝置的UDID是:{}".format(devices))

udid = devices[0]

#輸出所連線裝置的資訊
print("該裝置的資訊為:")
print(TIDevice.device_info(udid))

#輸出該裝置安裝的全部wda包名
print("該裝置安裝的全部wda如下:")
for wda_item in TIDevice.list_wda(udid):
    print(wda_item)

#獲取第一個wda的包名
wda_bundle_id = TIDevice.list_wda(udid)[0]

# 建立一個執行緒,執行xctest,啟動第一個wda
t = threading.Thread(target=TIDevice.xctest, args=(udid, wda_bundle_id), daemon=True)
t.start()
time.sleep(5)

#輸出當前啟動的wda包名
ps_wda = TIDevice.ps_wda(udid)
print("當前裝置所啟動的wda是:{}".format(ps_wda))

time.sleep(5)
# 終止執行緒
t.join(timeout=3)

四、小結

今天我們介紹了五個Airtest封裝的tidevice介面以及其使用方式跟效果。

  1. devices :列出USB連線的所有裝置的 UDID 列表
  2. device_info :獲取手機資訊
  3. list_wda :列出手機上安裝的所有WDA的 bundleID
  4. ps_wda :獲取當前啟動中的WDA列表
  5. xctest:啟動WDA

透過上面五個介面可以直接獲取本地usb連線裝置的一些資訊,包括裝置出廠資訊、wda包名、iOS型號等等,這些資訊可以幫助我們提取所需要的內容去進行呼叫。

同時如果大家在使用過程中有一些新的使用方式或者遇到了問題,又或者有任何想要深入瞭解的知識點,歡迎在官方交流群(526033840)裡告訴我們或者提交issue,也歡迎大家投稿其他不同的使用小技巧。我們下篇推文繼續介紹Airtest封裝的tidevice的其他介面~


AirtestIDE下載:airtest.netease.com/
Airtest 教程官網:airtest.doc.io.netease.com/
搭建企業私有云服務:airlab.163.com/b2b

官方答疑 Q 群:526033840

相關文章