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

在做自动化测试时,遇到两种情况需要判断usb是否已连接上,
一种是在开测时(前提是同时测试多台), 希望等待所有设备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, 这个不难理解也不断获取,其思路跟第一种情况也差不太多,不过我将其封装成了一个函数. 

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)

OK, 任务完成。

详细的常用cmd封装可参见:
https://github.com/vitamincqb/Toolset/blob/master/cmdutilsforphone.py

猜你喜欢

转载自blog.csdn.net/lxy210781/article/details/81811004
usb