python3 自动识别usb连接状态,即对usb重连的判断方法
在做自动化测试时,遇到两种情况需要判断usb是否已连接上(注,本文仅针对用adb命令来control手机)
一种是在开测时(前提是同时要测试多台),希望等待所有设备usb全部识别后同时进行测试。对于这一种,当然是可以另开一个窗口不断的输入adbdevices来检测,但不够AI。
一种是在测试过程中有时usb会自动断开,这时如果不判断usb是否有重新连接的话,则测试还会往下执行,测试指定是失败的。
第一种情况:其思路还是要利用adbdevices来不断的获取当前已连接的设备id。
1.先获取一个devlist,并计算当前已连接的设备数.
2.利用while循环,当重新获取一个devlist时,其设备数大于之前的设备数,则遍历newdevlist,当newdevice不在olddevlist里时,就print出deviceid,即实现了对usb的实时识别并打印了.
具体实现如下:
importos
fromtimeimportsleep
#获取设备id列表
defgetdevlist():
devlist=[]
connectfile=os.popen('adbdevices')
list=connectfile.readlines()
#print(list)
foriinrange(len(list)):
iflist[i].find('\tdevice')!=-1:
temp=list[i].split('\t')
devlist.append(temp[0])
returndevlist
connectdevice=input('请输入每次要同时连接的设备数:')
number=int(connectdevice.strip())
whileTrue:
lists=getdevlist()
devnum=len(lists)
id=1
tempdevlist=getdevlist()
ifdevnumdevnum:
foriinrange(len(lists)):
iflists[i]notintempdevlist:
print(f'设备{id}:{lists[i]}')
id=id+1
tempdevlist=getdevlist()
devnum=curnum
print(f'\n所有设备已全部识别!当前有连接{len(getdevlist())}台设备.\n\n')
第二种情况:第二种情况的前提的已知当前已连接设备的deviceid,这个不难理解也不难获取,其思路跟第一种情况也差不太多,不过我将其封装成了一个函数.应用场景其实在实际应用过程中,总有那个一两个地方,总会概率的usb断开然后又自动连接上,但这样就会执行失败,故对这样的概率会fail的场景先要做到了然于胸,才能在实适当的地方当判断来进行重连,做到代码简洁。
importos
fromtimeimportsleep
defreconnectAction(deviceid):
devlist=getdevlist()
print(f'设备{deviceid}正在尝试重连.')
id=1
whiledeviceidnotindevlist:
print(f'第{id}次',end='')
devtuple=getdevlist()
id=id+1
print(f'\n设备{deviceid}重新建立连接成功.')
sleep(1)
#example:
if__name__=='__main__':
deviceid='12lk34fkjaaf'
ifclickScreen(openfilemanager,deviceid)!=0:
print(f'{openfilemanager[1]}:执行失败‘)
reconnectAction(deviceid)
clickScreen(openfilemanager,deviceid)
OK,任务完成。
以上这篇python3自动识别usb连接状态,即对usb重连的判断方法就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持毛票票。