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


Posted in Python onJuly 03, 2019

在做自动化测试时,遇到两种情况需要判断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, 任务完成。

以上这篇python3 自动识别usb连接状态,即对usb重连的判断方法就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持三水点靠木。

Python 相关文章推荐
使用Python的Flask框架实现视频的流媒体传输
Mar 31 Python
Linux下使用python自动修改本机网关代码分享
May 21 Python
Python实现SMTP发送邮件详细教程
Mar 02 Python
python通过socket实现多个连接并实现ssh功能详解
Nov 08 Python
用不到50行的Python代码构建最小的区块链
Nov 16 Python
Python实现的选择排序算法示例
Nov 29 Python
python回调函数中使用多线程的方法
Dec 25 Python
python中计算一个列表中连续相同的元素个数方法
Jun 29 Python
使用Selenium破解新浪微博的四宫格验证码
Oct 19 Python
Python搭建代理IP池实现接口设置与整体调度
Oct 27 Python
python脚本后台执行方式
Dec 21 Python
python中的random模块和相关函数详解
Apr 22 Python
深入浅析python3中的unicode和bytes问题
Jul 03 #Python
10款最好的Python开发编辑器
Jul 03 #Python
python基于递归解决背包问题详解
Jul 03 #Python
Python跳出多重循环的方法示例
Jul 03 #Python
Python多版本开发环境管理工具介绍
Jul 03 #Python
介绍一款python类型检查工具pyright(推荐)
Jul 03 #Python
Python flask框架post接口调用示例
Jul 03 #Python
You might like
约瑟夫环问题的PHP实现 使用PHP数组内部指针操作函数
2010/10/12 PHP
javascript 表格排序和表头浮动效果(扩展SortTable)
2009/04/07 Javascript
javascript 设为首页与加入收藏兼容多浏览器代码
2011/01/11 Javascript
简单的代码实现jquery定时器
2013/11/17 Javascript
js图片闪动特效可以控制间隔时间如几分钟闪动一下
2014/08/12 Javascript
JavaScript检测弹出窗口是否已经关闭的方法
2015/03/24 Javascript
两种JS实现屏蔽鼠标右键的方法
2020/08/20 Javascript
jQuery实现只允许输入数字和小数点的方法
2016/03/02 Javascript
基于JavaScript实现瀑布流效果
2017/03/29 Javascript
node thread.sleep实现示例
2018/06/20 Javascript
详解React之父子组件传递和其它一些要点
2018/06/25 Javascript
微信小程序下拉框组件使用方法详解
2018/12/28 Javascript
如何用RxJS实现Redux Form
2018/12/29 Javascript
jQuery实现动态添加和删除input框实例代码
2019/03/26 jQuery
jQuery 判断元素是否存在然后按需加载内容的实现代码
2020/01/16 jQuery
在VUE style中使用data中的变量的方法
2020/06/19 Javascript
JavaScript数组常用的增删改查与其他属性详解
2020/10/13 Javascript
[03:46]DOTA2英雄基础教程 维萨吉
2013/12/11 DOTA
[02:34]DOTA2英雄基础教程 幽鬼
2014/01/02 DOTA
使用Python实现将list中的每一项的首字母大写
2019/06/11 Python
python模拟菜刀反弹shell绕过限制【推荐】
2019/06/25 Python
python3.6生成器yield用法实例分析
2019/08/23 Python
python隐藏类中属性的3种实现方法
2019/12/19 Python
python程序输出无内容的解决方式
2020/04/09 Python
通过自学python能找到工作吗
2020/06/21 Python
解决Windows下python和pip命令无法使用的问题
2020/08/31 Python
详解Pytorch显存动态分配规律探索
2020/11/17 Python
Python抖音快手代码舞(字符舞)的实现方法
2021/02/07 Python
HTML5离线应用与客户端存储的实现
2018/05/03 HTML / CSS
美国儿童珠宝在线零售商:Loveivy
2019/05/22 全球购物
必须要使用游标的SQL语句有那些
2012/05/07 面试题
String s = new String(“xyz”);创建了几个String Object?
2015/08/05 面试题
大学生自荐书范文
2013/12/10 职场文书
安全承诺书
2015/01/19 职场文书
考生诚信考试承诺书
2015/04/29 职场文书
Python中Matplotlib的点、线形状、颜色以及绘制散点图
2022/04/07 Python