在做自动化测试时,遇到两种情况需要判断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的实时识别并打印了.
具体实现如下:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
|
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的场景先要做到了然于胸,才能在实适当的地方当判断来进行重连,做到代码简洁。
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
|
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, 任务完成。
以上这篇python3 自动识别usb连接状态,即对usb重连的判断方法就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持服务器之家。
原文链接:https://blog.csdn.net/lxy210781/article/details/81811004