三、Airtest连接设备的脚本介绍
1. 前言
在Airtest介绍小结里面,我们有说过Airtest支持连接Android、iOS和Windows这几类“设备”。今天这一小节,我们将详细了解如何使用Airtest脚本来连接我们的待测设备。
2. 连接设备的接口介绍
Airtest提供了多种连接设备的接口:
1)auto_setup
首先是这个我们非常熟悉的初始化接口auto_setup
,使用它可以帮助我们自动配置运行环境,如果当前没有连接设备的话,就默认尝试连接Android设备。
当然,它也支持我们传入设备连接字符串“列表”,来帮我们 连接单台或者多台设备 :
auto_setup(__file__, devices=["Android://127.0.0.1:5037/SJE5T17B17","Android://127.0.0.1:5037/SJE5T17B18"])
2)connect_device
在 connect_device
接口中传入设备的URI字符串即可连接1台设备:
dev = connect_device("Android://127.0.0.1:5037/SJE5T17B17")
如果需要连接多台设备,可以编写多条的 connect_device
脚本,并且用 set_current
来切换到当前使用设备:
# 连上第一台手机
dev1 = connect_device("Android://127.0.0.1:5037/serialno1")
# 连上第二台手机
dev2 = connect_device("Android://127.0.0.1:5037/serialno2")
# 切换当前操作的手机到序列号为serialno1的手机
set_current("serialno1")
3)init_device
init_device
接口只需要传入 设备平台和设备的uuid 即可,参数详情可以查看下图:
init_device(platform="Android",uuid="SJE5T17B17")
3. 连接Android设备
介绍了Airtest给我们提供的连接设备的各种API之后,我们再来了解下,我们是如何编写各种设备的URI字符串的。(上文类似Android:///127.0.0.1:5037/79d03fa
这样的就是1条URI字符串)
1)Android设备的URI字符串
# 什么都不填写,默认取当前连接中的第一台手机
Android:///
# 连接本机默认端口连的一台设备号为79d03fa的手机
Android://127.0.0.1:5037/79d03fa
# 用本机的adb连接一台adb connect过的远程设备,注意10.254.60.1:5555其实是serialno
Android://127.0.0.1:5037/10.254.60.1:5555
# 连接夜神模拟器(127.0.0.1:62001为夜神模拟器的端口号)
Android://127.0.0.1:5037/127.0.0.1:62001?cap_method=JAVACAP
2)连接Android设备的示例
# 使用auto_serup
auto_setup(__file__, devices=["Android://127.0.0.1:5037/SJE5T17B17"])
# 使用connect_device
connect_device("Android:///SJE5T17B17?cap_method=javacap&touch_method=adb")
# 使用init_device
init_device(platform="Android",uuid="SJE5T17B17", cap_method="JAVACAP")
4. 连接iOS设备
1)iOS设备的URI字符串
# 连接本机部署的iOS真机
iOS:///http://127.0.0.1:8100
# 使用tidevice连接的iOS设备,DeviceIdentifier可以在启动的信息中查看
http+usbmux://DeviceIdentifier
2)连接iOS设备的示例
# 使用auto_serup
auto_setup(__file__,devices=["iOS:///http://127.0.0.1:8100"])
# 使用connect_device
connect_device("iOS:///http://127.0.0.1:8100")
# 使用init_device
init_device(platform="IOS",uuid="http://127.0.0.1:8100")
5. 连接Windows窗口/桌面
1)Windows窗口/桌面的URI字符串
# 连接一个窗口句柄为123456的Windows窗口
Windows:///123456
# 连接一个Windows窗口,窗口名称匹配某个正则表达式
Windows:///?title_re=Unity.*
# 连接windows桌面,不指定任何窗口
Windows:///
2)连接Windows窗口/桌面的示例
# 使用auto_serup
auto_setup(__file__,devices=["Windows:///"])
# 使用connect_device
connect_device("Windows:///?title_re=Unity.*")
# 使用init_device
init_device(platform="Windows",uuid="123456")
6. 编写连接设备的脚本的注意事项
1)什么情况需要用脚本连接设备
在AirtestIDE中运行.air
脚本,IDE会自动帮我们获取设备窗当前连接的设备来运行脚本;除此之外,其余情况均需要我们用脚本处理设备连接这个事情:
- 在AirtestIDE运行
.py
脚本(可使用初始化接口auto_setup
连接设备) - 使用AirtestIDE之外的编辑器运行
.air
、.py
脚本,均需要我们在脚本里面连接待测设备 - 在命令行使用
airtest run
命令运行脚本,且没有传入--device
参数
2)连接设备的脚本应放在整个脚本的那个位置
连接设备的脚本最好放在脚本初始化接口 auto_setup
里面,如果同学们想使用其他语句来连接脚本,也尽量跟在脚本初始化接口之后就好了,如果设备连接语句放在了操作的脚本之后,可能导致出现'NoneType' object has no attribute 'snapshot'
(操作之前未连接上设备)这样的报错: