python3 自动识别usb连接状态,即对usb重连的判断方法
作者:五力 发布时间:2022-03-10 01:26:21
标签:python3,识别,usb,连接
在做自动化测试时,遇到两种情况需要判断usb是否已连接上(注,本文仅针对用adb命令来control手机)
一种是在开测时(前提是同时要测试多台), 希望等待所有设备usb全部识别后同时进行测试。对于这一种,当然是可以另开一个窗口不断的输入adb devices来检测,但不够AI。
一种是在测试过程中有时usb会自动断开,这时如果不判断usb是否有重新连接的话,则测试还会往下执行,测试指定是失败的。
第一种情况:其思路还是要利用adb devices来不断的获取当前已连接的设备id。
1.先获取一个devlist, 并计算当前已连接的设备数.
2.利用while循环,当重新获取一个devlist时,其设备数大于之前的设备数,则遍历new devlist,当new device不在old devlist里时,就print出deviceid, 即实现了对usb的实时识别并打印了.
具体实现如下:
import os
from time import sleep
# 获取设备id列表
def getdevlist():
devlist = []
connectfile = os.popen('adb devices')
list = connectfile.readlines()
# print(list)
for i in range(len(list)):
if list[i].find('\tdevice') != -1:
temp = list[i].split('\t')
devlist.append(temp[0])
return devlist
connectdevice = input('请输入每次要同时连接的设备数:')
number = int(connectdevice.strip())
while True:
lists = getdevlist()
devnum = len(lists)
id = 1
tempdevlist = getdevlist()
if devnum < number:
print(f'\n设备未全部识别,应识别{number}台设备!\n当前已识别{devnum}台设备,请连接设备并等待识别:\n\n')
for i in range(devnum):
print(f'设备{id}: {lists[i]}')
id = id + 1
# 等待识别所有设备
while devnum < number:
lists = getdevlist()
curnum = len(lists)
if curnum > devnum:
for i in range(len(lists)):
if lists[i] not in tempdevlist:
print(f'设备{id}: {lists[i]}')
id = id + 1
tempdevlist = getdevlist()
devnum = curnum
print(f'\n所有设备已全部识别!当前有连接{len(getdevlist())}台设备.\n\n')
第二种情况:第二种情况的前提的已知当前已连接设备的deviceid, 这个不难理解也不难获取,其思路跟第一种情况也差不太多,不过我将其封装成了一个函数. 应用场景其实在实际应用过程中,总有那个一两个地方,总会概率的usb断开然后又自动连接上,但这样就会执行失败,故对这样的概率会fail的场景先要做到了然于胸,才能在实适当的地方当判断来进行重连,做到代码简洁。
import os
from time import sleep
def reconnectAction(deviceid):
devlist = getdevlist()
print(f'设备{deviceid}正在尝试重连.')
id = 1
while deviceid not in devlist:
print(f'第{id}次 ', end = ' ')
devtuple = getdevlist()
id = id + 1
print(f'\n设备{deviceid}重新建立连接成功.')
sleep(1)
# example:
if __name__ == '__main__':
deviceid = '12lk34fkjaaf'
if clickScreen(openfilemanager, deviceid) != 0:
print(f'{openfilemanager[1]}:执行失败‘)
reconnectAction(deviceid)
clickScreen(openfilemanager, deviceid)
OK, 任务完成。
来源:https://blog.csdn.net/lxy210781/article/details/81811004


猜你喜欢
- python3.0 模拟用户登录,三次错误锁定的实例实例如下所示:# -*- coding:utf-8 -*-#需求模拟用户登录,超过三次错
- 1. 小整数对象池整数在程序中的使用非常广泛,Python为了优化速度,使用了小整数对象池, 避免为整数频繁申请和销毁内存空间。Python
- Windows下ORACLE完全卸载:使用OUI可以卸载数据库,但卸载后注册表和文件系统内仍会有部分残留。这些残留不仅占用磁盘空间,而且影响
- 目录普通分页查询如何优化偏移量大采用id限定方式优化数据量大问题普通分页查询当我们在日常工作中遇到大数据查询的时候,第一反应就是使用分页查询
- 我用 ip=Request.ServerVariables ("
- 前言众所周知,jquery在我们日常开发中的使用频率非常高,与js相比,我们省去了冗长的获取元素的代码,不用考虑一些麻烦的兼容问题,更加方便
- 1、panic当我们执行panic的时候会结束下面的流程:package mainimport "fmt"func ma
- 超如果你急需一个简单的Web Server,但你又不想去下载并安装那些复杂的HTTP服务程序,比如:Apache,ISS等。那么, Pyth
- 如下所示:# coding=gbkfrom PIL import Imageimport numpy as np# import scipy
- 我们可以用DataFrame的apply函数实现对多列,多行的操作。需要记住的是,参数axis设为1是对列进行操作,参数axis设为0是对行
- python将字典内容写入json文件的方法:我们可以先使用json.dumps()函数将字典转换为字符串;然后再将内容写入json即可。j
- 实际工作经历中,免不了有时候需要连接数据库进行问题排查分析的场景,之前一直习惯通过 mysql -uxxx -hxxxx -P1234 ..
- pycharm报错提示:无法加载文件\venv\Scripts\activate.ps1,因为在此系统上禁止运行脚本在pycharm终端出现
- 本文将通过解读render函数的源码,来分析vue中的vNode是如何创建的。在vue2.x的版本中,无论是直接书写render函数,还是使
- 在编写一些小程序时,我需要比较两个字符串是否相同。一开始的思路是使用ord()函数获取字符的整数表示,但是调试过后发现,ord()函数传入的
- 前提对Vue全家桶有基本的认知.用有node环境了解express另外本篇只是介绍登录状态的权限验证,以及登录,注销的前后端交互.具体流程(
- 一 Cookie因为HTTP协议是没有状态的,但很多情况下是需要一些信息的,比如在用户登陆后、再次访问网站时,没法判断用户是否登陆过。于是就
- 导语描述 MySQL 压缩的使用场景和解决方案,包括压缩传输协议、压缩列解决方案和压缩表解决方案。提到 MySQL 压缩相关的内容,我们能想
- 选择排序选择排序(selection sort)是一种原地(in-place)排序算法,适用于数据量较少的情况。由于选择操作是基于
- opencv OpenCV是一个基于BSD许可(开源)发行的跨平台计算机视觉库,可以运行在Linux、Windows、Android和Mac