前言
Airtest
支持在一个脚本中连接上多台手机,但是需要注意的是,并不是能够自动让这一个脚本在多台手机上跑,而是能够在脚本中使用这几台手机,实现一些类似于多机协作的效果。
下文我们将以俩台手机相互添加微信好友的案例,来展示多机协作的效果。
在同一脚本内连接多台设备
使用AirtestIDE连接
AirtestIDE给我们提供了连接多台手机设备的功能(以Android
设备为例)。首先,我们需要保证手机正确连上了电脑;然后在IDE移动设备连接面板内,点击刷新ADB
,可以正常显示连接上电脑的设备:
先点击任意一个设备的connect
按钮,连接上该设备后,设备镜像右上角会出现俩个按钮,左边的按钮就是用来切换设备或者切换到刚才连接设备的面板:
点击Connection Panel
,即可回到连接设备面板,再继续连接另外一台设备:
当这俩台设备都成功连接上IDE之后,我们就可以利用刚才切换连接面板的按钮,来随意切换设备镜像:
此时在AirtestIDE编写好脚本以后,点击运行脚本的按钮,IDE将会自动在命令行中添加多个--device
参数,把当前连接的手机都告诉脚本,无需其他额外操作:
在脚本内连接
除了使用IDE直接连接多台设备以外,我们还可以在脚本里使用多个connect_device
语句,分别传入手机连接串信息即可:
from airtest.core.api import * # 连上第一台手机 dev1 = connect_device("Android://127.0.0.1:5037/serialno1") # 连上第二台手机 dev2 = connect_device("Android://127.0.0.1:5037/serialno2") 复制代码
其中127.0.0.1
代表本机IP,5037
是默认的adb port
,serialno
是android
手机的序列号。
在命令行连接
如果我们的脚本内没有编写连接设备的语句,那么在命令行运行脚本时,则需要将手机依次使用 --device Android:///
添加到命令行中,例如:
>airtest run untitled.air --device Android:///serialno1 --device Android:///serialno2 --device Android:///serialno3 复制代码
多台设备之间的切换
在连接多台手机后,我们能够在Airtest的全局变量G.DEVICE_LIST
中看到所有当前连接中的设备:
print(G.DEVICE_LIST) # 此时设备列表为[dev1, dev2] 复制代码
也可以使用set_current
接口在多台设备之间切换,这个接口切换设备的方式有俩种:
# 第一种:传入数字0、1、2等,切换当前操作的手机到Airtest连接的第1台、第2台、第3台手机 set_current(0) set_current(1) set_current(2) # 第二种:切换当前操作的手机到序列号为serialno1、serialno2的手机 set_current("serialno1") set_current("serialno2") 复制代码
编写微信互加好友的脚本并运行
只要弄清楚如何连接多台设备以及如何切换当前操作的手机,接下来我们就可以非常轻易地写出微信互加好友的脚本,该脚本的大致思路是:
- 连接上2台安卓手机设备
- 切换当前操作手机为设备A
- 在手机A上执行发送好友申请的一系列操作
- 切换当前操作手机为设备B
- 在手机B上执行通过好友申请的一系列操作
- 俩台手机成功互加好友
# -*- encoding=utf8 -*- __author__ = "xiaoming" from airtest.core.api import * auto_setup(__file__) # 连上第一台手机(设备A) dev1 = connect_device("Android://127.0.0.1:5037/SJE5T17B170xxxxx") # 第二台手机(设备B) dev2 = connect_device("Android://127.0.0.1:5037/2b3ab9axxxx") # 切换当前操作手机为设备A set_current("SJE5T17B170xxxxx") # 在设备A上发送好友申请 pass # 切换当前操作手机为设备B set_current("2b3ab9axxxx") #在设备B上接受好友申请 pass 复制代码