首页 > 其他分享 >Airtest封装的Tidevice接口有多好用(一)

Airtest封装的Tidevice接口有多好用(一)

时间:2024-07-18 10:31:49浏览次数:13  
标签:wda 封装 WDA udid Airtest print Tidevice 设备 TIDevice

此文章来源于项目官方公众号:“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) :列出手机上安装的所有WDA的 bundleID

通过该接口可以在符合特定命名规则的设备上获取该设备的所有 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

标签:wda,封装,WDA,udid,Airtest,print,Tidevice,设备,TIDevice
From: https://www.cnblogs.com/AirtestProject/p/18308921

相关文章

  • 使用ElementUI和element-china-area-data库实现省市区三级联动组件封装
    使用ElementUI和element-china-area-data库实现省市区三级联动组件封装在前端开发中,省市区三级联动是一个常见的需求。今天我们将使用Vue.js和ElementUI组件库,结合element-china-area-data库,来实现一个省市区三级联动的组件。这个组件不仅可以提高用户体验,还能大大简化我们的代码......
  • 二次封装antd的ProTable、EditableProTable,结合use-antd-resizable-header,做一个列可
    原先是一个项目模块内需求,迭代的时候领导要求项目全面翻新,所有表格都要可伸缩列如果一个一个页面写伸缩列的话,每个页面都要引用一次use-antd-resizable-header,有点累赘找了网上,暂时没看见这个有人整理这个组件。直接上代码importProTablefrom"@ant-design/pro-table";i......
  • cookie方法封装
    方法封装:/***获取cookie*/exportfunctiongetCookie(sKey:string):string{if(!sKey){returnnull;}returndecodeURIComponent(document.cookie.replace(newRegExp("(?:(?:^|.*;)\\s*"+encodeURIComponent(sKey).replace(/[\-\.\+\*]/g,......
  • HTTP协议——请求封装
    请求封装在我们使用请求的使用避免不了多次请求,这样代码的重复率就会变高,我们可以将请求进行封装进而调用,不仅提高了代码的重用性也提高了代码的质量封装  internalclassHttp  {    ///<summary>    ///请求类型    ///</summary>......
  • LM2733YMF/NOPB 封装 SOT23-5 丝印S52B DC-DC电源芯片
    LM2733YMF/NOPB规格信息:制造商:TexasInstruments产品种类:开关稳压器RoHS:是安装风格:SMD/SMT封装/箱体:SOT-23-5输出电压:3Vto40V输出电流:1.5A输出端数量:1Output最大输入电压:14V拓扑结构:Boost开关频率:600kHz最小工作温度:-40C最大工作温度:+......
  • vue3 封装svg图标
    安装插件npmivite-plugin-svg-icons1.修改 vite.config.jsimport{resolve}from'path'import{createSvgIconsPlugin}from'vite-plugin-svg-icons';exportdefaultdefineConfig({  plugins:[    vue(),    createSvgIconsPlugin({......
  • 0基础学python-15:封装、继承和多态
    目录前言 一、封装(Encapsulation)私有变量: 二、继承(Inherit) 三、多态(Polymorphism)总结前言        封装、继承和多态是面向对象编程的三大基本特性,它们与面向对象编程(OOP)密切相关。  一、封装(Encapsulation)概念:封装指的是将数据(属性)和操作数据的方法......
  • SciTech-EECS-PCB设计- PCB设计-原理图设计 - Schematic library(原理图元器件库)的设
    原理图绘制的“环境参数设置”设置原理图绘制的“环境参数”步骤大体有:在ad软件主界面菜单,选择“File->New->Project”,在创建工程的窗口,看见一个名称为PCB_Project1.PrjPCB的新工程。按照前面所介绍的“添加原理图”的方法,添加名称为“Sheet1.SchDoc”的“原理图文件”。......
  • 《0基础》学习Python——第十四讲__封装、继承、多态
    <封装、继承、多态>一、类和实例解析    1、面向对象最重要的概念就是类(Class)和实例(Instance),必须牢记类是抽象的模板,比如Student类,而实例是根据类创建出来的一个个具体的“对象”,每个对象都拥有相同的方法,但各自的数据可能不同。    2、用class类名......
  • 【HarmonyOS开发】Tabs使用封装
    背景在写Tabs时,会使用很多个TabContent来实现不同页面的展示内容,但是如果TabContent数量很多时,会导致Tabs代码量大而且很臃肿,因此想着尝试去封装Tabs的使用,可以让界面整洁和对内容界面的解耦。主要依托于wrapBuilder:封装全局@Builder的方法使用。需要注意从API11才开始......