用python实现多机协作

简介: 用python实现多机协作

前言



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 portserialnoandroid手机的序列号。


在命令行连接


如果我们的脚本内没有编写连接设备的语句,那么在命令行运行脚本时,则需要将手机依次使用 --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")
复制代码


编写微信互加好友的脚本并运行



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


  1. 连接上2台安卓手机设备
  2. 切换当前操作手机为设备A
  3. 在手机A上执行发送好友申请的一系列操作
  4. 切换当前操作手机为设备B
  5. 在手机B上执行通过好友申请的一系列操作
  6. 俩台手机成功互加好友


# -*- 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
复制代码


相关文章
|
7月前
|
项目管理 开发工具 git
Python面试题:Git版本控制与协作开发
【4月更文挑战第19天】本文聚焦于Python面试中Git版本控制与协作开发的考察点,涵盖Git基础、协作流程及实战示例。面试者需理解仓库、提交、分支等核心概念,掌握常用命令,熟悉主干开发和GitFlow策略。在协作开发中,要掌握Pull Request工作流,有效处理合并冲突,并善用标签与里程碑。注意避免混淆工作区、忽视代码审查和直接在远程分支上工作等常见错误。通过实例展示了如何在GitFlow策略下合并分支和解决冲突,强调持续学习与实践以提升Git技能。
70 1
|
7月前
|
存储 开发工具 git
Python中的版本控制和代码协作工具
在Python项目中,版本控制和代码协作是非常重要的。最常用的版本控制工具是Git,而代码协作则通常通过Git配合代码托管平台(如GitHub、GitLab等)来实现。以下是一个基本的流程,说明如何使用Git进行版本控制以及如何通过GitHub进行代码协作。
|
4月前
|
安全 开发者 Python
跨越编程孤岛,构建互联大陆:深入探索Python进程间通信的奥秘,解锁高效协作新纪元!
【8月更文挑战第3天】在编程领域,Python 因其简洁强大而广受欢迎。但随着项目规模扩大,单进程难以应对复杂需求,此时多进程间的协同就显得尤为重要。各进程像孤岛般独立运行,虽提升了稳定性和并发能力,但也带来了沟通障碍。为解决这一问题,Python 提供了多种进程间通信(IPC)方式,如管道、队列和套接字等,它们能有效促进数据交换和任务协作,使各进程像大陆般紧密相连。通过这些机制,我们能轻松搭建起高效的多进程应用系统,实现更加复杂的业务逻辑。
38 2
|
4月前
|
Python
Python IPC深度探索:解锁跨进程通信的无限可能,以管道与队列为翼,让你的应用跨越边界,无缝协作,震撼登场
【8月更文挑战第3天】Python IPC大揭秘:解锁进程间通信新姿势,让你的应用无界连接
28 0
|
7月前
|
JavaScript 前端开发 API
使用Python和Vue构建多用户协作平台的终极指南
【4月更文挑战第11天】本指南介绍了如何使用Python和Vue.js构建多用户协作平台。首先确保安装Node.js、Python 3.x、pip和git。使用Flask搭建后端,设计RESTful API实现用户注册、登录等功能。前端利用Vue.js创建组件,结合Vuex和Vue Router处理状态管理和页面路由。通过Axios与后端通信,实现用户交互和数据同步。完成后进行测试,用Docker容器化应用并选择云服务部署。随着需求和技术发展,持续迭代和完善平台。
195 0
|
Python
Python实现因子分析(附案例实战)
Python实现因子分析(附案例实战)
1802 0
Python实现因子分析(附案例实战)
Python print() 打印两个 list ,实现中间换行
Python print() 打印两个 list ,实现中间换行
|
算法 大数据 Python
Leedcode 每日一练 搜索二维矩阵Ⅰ Python实现
Leedcode 每日一练 搜索二维矩阵Ⅰ Python实现
160 2
Leedcode 每日一练 搜索二维矩阵Ⅰ Python实现
|
存储 数据安全/隐私保护 计算机视觉
python 实现pacs功能 推送下拉影像
python 实现dcmtk关联pacs功能 推送下拉影像
292 0
python 实现pacs功能 推送下拉影像
|
前端开发 Python
Leecode加法题目3个 每日练习 Python实现
Leecode加法题目3个 每日练习 Python实现
115 0
Leecode加法题目3个 每日练习 Python实现