python3 自动识别自动识别usb连接状态连接状态,即对即对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(' device') != -1:
temp = list[i].split(' ')
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'设备未全部识别,应识别{number}台设备!当前已识别{devnum}台设备,请连接设备并等待识别:')
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'所有设备已全部识别!当前有连接{len(getdevlist())}台设备.')
第二种情况:第二种情况:第二种情况的前提的已知当前已连接设备的deviceid, 这个不难理解也不难获取,其思路跟第一种情况也差不太
多,不过我将其封装成了一个函数. 应用场景其实在实际应用过程中,总有那个一两个地方,总会概率的usb断开然后又自动
连接上,但这样就会执行失败,故对这样的概率会fail的场景先要做到了然于胸,才能在实适当的地方当判断来进行重连,做到
代码简洁。
import os
from time import sleep
评论0