三、在AirtestIDE实现多机协作

1. 在AirtestIDE的设备窗口连接多台设备

IDE给我们提供了连接多台手机设备的功能(以Android设备为例)。首先,我们需要保证手机正确连上了电脑;然后在IDE移动设备连接面板内,点击刷新ADB,可以正常显示连接上电脑的设备:

image

先点击任意一个设备的connect按钮,连接上该设备后,设备镜像右上角会出现俩个按钮,左边的按钮就是用来切换设备或者切换到刚才连接设备的面板

image

点击Connection Panel,即可回到连接设备面板,再继续连接另外一台设备:

image

当这俩台设备都成功连接上IDE之后,我们就可以利用刚才切换连接面板的按钮,来随意切换设备镜像:

image

此时在AirtestIDE编写好脚本以后,点击运行脚本的按钮,IDE将会自动在命令行中添加多个--device参数,把当前连接的手机都告诉脚本,无需其他额外操作:

image

2. 使用 set_current 实现多设备切换

在连接多台手机后,我们能够在Airtest的全局变量G.DEVICE_LIST中看到所有当前连接中的设备:

  1. print(G.DEVICE_LIST)
  2. # 此时设备列表为[dev1, dev2]

image

也可以使用set_current接口在多台设备之间切换,这个接口切换设备的方式有俩种:

  1. # 第一种:传入数字0、1、2等,切换当前操作的手机到Airtest连接的第1台、第2台、第3台手机
  2. set_current(0)
  3. set_current(1)
  4. set_current(2)
  5. # 第二种:切换当前操作的手机到序列号为serialno1、serialno2的手机
  6. set_current("serialno1")
  7. set_current("serialno2")

3. 拓展:在命令行连接多台设备

在我们的脚本中,支持通过 set_current 接口来切换当前连接的手机,因此我们一个脚本中,是能够调用多台手机,编写出一些复杂的多机交互脚本的。

在命令行运行脚本时,只需要将手机依次使用 --device Android:/// 添加到命令行中即可,例如:

  1. >airtest run untitled.air --device Android:///serialno1 --device Android:///serialno2 --device Android:///serialno1

4. 拓展:在脚本里连接多台设备

除了使用IDE直接连接多台设备以外,我们还可以在脚本里使用多个connect_device语句,分别传入手机连接串信息即可:

  1. from airtest.core.api import *
  2. # 连上第一台手机
  3. dev1 = connect_device("Android://127.0.0.1:5037/serialno1")
  4. # 连上第二台手机
  5. dev2 = connect_device("Android://127.0.0.1:5037/serialno2")

其中127.0.0.1代表本机IP,5037是默认的adb portserialnoandroid手机的序列号。

5. 拓展:在IDE实现多机协作—微信互加好友

只要弄清楚如何连接多台设备以及如何切换当前操作的手机,接下来我们就可以非常轻易地写出微信互加好友的脚本,该脚本的大致思路是:

① 连接上2台安卓手机设备

② 切换当前操作手机为设备A

③ 在手机A上执行发送好友申请的一系列操作

④ 切换当前操作手机为设备B

⑤ 在手机B上执行通过好友申请的一系列操作

⑥ 俩台手机成功互加好友

  1. # -*- encoding=utf8 -*-
  2. __author__ = "xiaoming"
  3. from airtest.core.api import *
  4. auto_setup(__file__)
  5. # 连上第一台手机(设备A)
  6. dev1 = connect_device("Android://127.0.0.1:5037/SJE5T17B170xxxxx")
  7. # 第二台手机(设备B)
  8. dev2 = connect_device("Android://127.0.0.1:5037/2b3ab9axxxx")
  9. # 切换当前操作手机为设备A
  10. set_current("SJE5T17B170xxxxx")
  11. # 在设备A上发送好友申请
  12. pass
  13. # 切换当前操作手机为设备B
  14. set_current("2b3ab9axxxx")
  15. #在设备B上接受好友申请
  16. pass

脚本执行结果可以查看下方的小视频:

互加好友