一日一技:Airtest连接多个手机的时候,如何start_app?

简介: 一日一技:Airtest连接多个手机的时候,如何start_app?

我们在看Airtest的文档时,肯定会发现它有这样一段代码:

方框中的这一段代码的意思是,通过包名来启动一个App。

当你电脑只连接了1台手机的时候,这样做是没有问题的,但是你有没有考虑过,如果你电脑里面连接了很多台手机,那么你直接这样没头没尾的 start_app启动一个App,你启动的是哪个手机上的App?

要解决这个问题,就要从如何连接多台手机这个话题说起了。关于如何连接多台手机,Airtest的官方文档可以说是写的非常模糊。

经过我的测试,下面这种方案是最有效的:

from airtest.core.api import connect_device
device_1 = connect_device('android:///串号1')
device_2 = connect_device('android:///串号2')
device_3 = connect_device('android:///串号3')

当你这样连接了3个手机以后,如果直接执行 start_app,那么你会在 串号1对应的手机上启动App。

此时如果你执行下面的代码,你会发现返回一个有3个元素的列表:

>>> from airtest.core.api import G
>>> G.DEVICE_LIST
[<airtest.core.android.android.Android object at 0x118c55cc0>, <airtest.core.android.android.Android object at 0x118a4f550>, <airtest.core.android.android.Android object at 0x11b0ec358>]

这就是你当前连接的三个手机。如果你想控制第二个手机怎么办呢?使用下面的命令:

from airtest.core.api import set_current
set_current(1)
start_app('包名')

set_current(1)里面的1对应了列表下标为1的这个手机。也就是第二个加入的手机。

同理,当你想在第三个手机上启动App时,你需要再切换为 set_current(2)

这种方式用起来确实比较麻烦,所以我一般会使用Poco的接口来直接操作每一个手机。所以此时需要把 device_1device_2device_3作为参数传入给

AndroidUiautomationPoco,代码如下:
1. from airtest.core.api import connect_device
2. from poco.drivers.android.uiautomation import AndroidUiautomationPoco
3. 
4. 
5. device_1 = connect_device('android:///串号1')
6. device_2 = connect_device('android:///串号2')
7. device_3 = connect_device('android:///串号3')
8. 
9. poco_1 = AndroidUiautomationPoco(device_1, use_airtest_input=True, screenshot_each_action=False)
10. poco_2 = AndroidUiautomationPoco(device_2, use_airtest_input=True, screenshot_each_action=False)
11. poco_3 = AndroidUiautomationPoco(device_3, use_airtest_input=True, screenshot_each_action=False)
12. 
13. poco_1(text='微信').click()
14. poco_2(text='微信').click()
15. poco_3(text='微信').click()

使用这种方式,就不需要来回切换,并且还可以使用多线程直接同时控制每一台手机。


目录
相关文章
|
4月前
|
Android开发
HBuilder X连接雷电模拟器(手机模拟器)
HBuilder X连接雷电模拟器(手机模拟器)
HBuilder X连接雷电模拟器(手机模拟器)
|
3月前
|
传感器 数据采集 移动开发
基于STM32的智能手环wifi连接手机APP(下)
基于STM32的智能手环wifi连接手机APP(下)
150 0
|
3月前
|
小程序 JavaScript API
微信小程序开发之:保存图片到手机,使用uni-app 开发小程序;还有微信原生保存图片到手机
这篇文章介绍了如何在uni-app和微信小程序中实现将图片保存到用户手机相册的功能。
1423 0
微信小程序开发之:保存图片到手机,使用uni-app 开发小程序;还有微信原生保存图片到手机
|
4月前
|
移动开发 Android开发 数据安全/隐私保护
移动应用与系统的技术演进:从开发到操作系统的全景解析随着智能手机和平板电脑的普及,移动应用(App)已成为人们日常生活中不可或缺的一部分。无论是社交、娱乐、购物还是办公,移动应用都扮演着重要的角色。而支撑这些应用运行的,正是功能强大且复杂的移动操作系统。本文将深入探讨移动应用的开发过程及其背后的操作系统机制,揭示这一领域的技术演进。
本文旨在提供关于移动应用与系统技术的全面概述,涵盖移动应用的开发生命周期、主要移动操作系统的特点以及它们之间的竞争关系。我们将探讨如何高效地开发移动应用,并分析iOS和Android两大主流操作系统的技术优势与局限。同时,本文还将讨论跨平台解决方案的兴起及其对移动开发领域的影响。通过这篇技术性文章,读者将获得对移动应用开发及操作系统深层理解的钥匙。
118 12
|
3月前
|
传感器 存储 编解码
基于STM32的智能手环wifi连接手机APP(上)
基于STM32的智能手环wifi连接手机APP(上)
101 0
|
3月前
|
Android开发 Swift iOS开发
python 基于电脑蓝牙连接获取手机的实时数据
python 基于电脑蓝牙连接获取手机的实时数据
82 0
|
4月前
【Azure Logic App】使用Event Hub 连接器配置 Active Directory OAuth 认证无法成功连接到中国区Event Hub的解决之法
An exception occurred while retrieving properties for Event Hub: logicapp. Error Message: 'ClientSecretCredential authentication failed: AADSTS90002: Tenant 'xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx' not found. Check to make sure you have the correct tenant ID and are signing into the correct cloud. Che
|
5月前
|
安全 API 网络安全
【Azure API 管理】APIM不能连接到 App Service (APIM cannot connect to APP service)
【Azure API 管理】APIM不能连接到 App Service (APIM cannot connect to APP service)
|
5月前
|
C++
【Azure Logic App】使用Event Hub 连接器配置 Active Directory OAuth 认证无法成功连接到中国区Event Hub
【Azure Logic App】使用Event Hub 连接器配置 Active Directory OAuth 认证无法成功连接到中国区Event Hub
|
5月前
|
存储 SQL JSON
【Azure Logic App】微软云逻辑应用连接到数据库,执行存储过程并转换执行结果为JSON数据
【Azure Logic App】微软云逻辑应用连接到数据库,执行存储过程并转换执行结果为JSON数据
【Azure Logic App】微软云逻辑应用连接到数据库,执行存储过程并转换执行结果为JSON数据