python3 自动识别usb连接状态,即对usb重连的判断方法

作者:五力 时间:2022-03-10 01:26:21 

在做自动化测试时,遇到两种情况需要判断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,识别,usb,连接
0
投稿

猜你喜欢

  • pytorch DistributedDataParallel 多卡训练结果变差的解决方案

    2021-09-24 14:31:43
  • php实现mysql同步的实现方法

    2023-11-24 13:58:56
  • pytorch中forwod函数在父类中的调用方式解读

    2023-04-27 11:12:25
  • 500行代码使用python写个微信小游戏飞机大战游戏

    2023-01-16 06:58:09
  • python RabbitMQ 使用详细介绍(小结)

    2022-11-18 21:29:33
  • 利用Python编写简易的录制屏幕小工具

    2023-12-17 04:34:57
  • python实现批量监控网站

    2023-07-22 20:41:08
  • python用于url解码和中文解析的小脚本(python url decoder)

    2023-01-28 06:19:00
  • PHP simplexml_import_dom()函数讲解

    2023-06-09 19:18:30
  • Python列表计数及插入实例

    2023-05-26 23:41:12
  • 利用SQLyogEnt对Mysql数据库进行转移

    2012-02-25 20:17:30
  • django 基于中间件实现限制ip频繁访问过程详解

    2022-06-24 08:38:43
  • Python 在局部变量域中执行代码

    2023-06-12 04:57:15
  • 使用Pytorch来拟合函数方式

    2021-06-22 18:10:45
  • 一行CSS代码为网站加上奥运主题

    2008-07-20 12:33:00
  • Go语言的GOPATH与工作目录详解

    2023-08-29 06:54:04
  • Python 数据可视化实现5种炫酷的动态图

    2023-07-22 10:46:14
  • 15个滑动门效果CSS导航菜单实例教程

    2010-02-20 13:02:00
  • django云端留言板实例详解

    2023-12-13 08:17:59
  • 用CSS定义 li 样式

    2007-09-28 20:56:00
  • asp之家 网络编程 m.aspxhome.com