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模仿POST提交HTTP数据及使用Cookie值的方法
Nov 10 Python
Python遍历目录的4种方法实例介绍
Apr 13 Python
JSON Web Tokens的实现原理
Apr 02 Python
django 按时间范围查询数据库实例代码
Feb 11 Python
火车票抢票python代码公开揭秘!
Mar 08 Python
Python中实现单例模式的n种方式和原理
Nov 14 Python
pyqt5 QProgressBar清空进度条的实例
Jun 21 Python
pytorch 在网络中添加可训练参数,修改预训练权重文件的方法
Aug 17 Python
python多线程实现TCP服务端
Sep 03 Python
python使用SQLAlchemy操作MySQL
Jan 02 Python
Python字典和列表性能之间的比较
Jun 07 Python
Python利用FlashText算法实现替换字符串
Mar 31 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时间不正确的解决方法
2008/04/09 PHP
php中将时间差转换为字符串提示的实现代码
2011/08/08 PHP
ThinkPHP连接Oracle数据库
2016/04/22 PHP
jquery foreach使用示例
2013/09/12 Javascript
动态添加option及createElement使用示例
2014/01/26 Javascript
使用jQuery jqPlot插件绘制柱状图
2014/12/18 Javascript
NodeJS学习笔记之Connect中间件模块(二)
2015/01/27 NodeJs
javascript关于运动的各种问题经典总结
2015/04/27 Javascript
简介JavaScript中toUpperCase()方法的使用
2015/06/06 Javascript
如何屏蔽防止别的网站嵌入框架代码
2015/08/24 Javascript
jQuery AJAX timeout 超时问题详解
2016/06/21 Javascript
微信小程序中显示html格式内容的方法
2017/04/25 Javascript
解决Nodejs全局安装模块后找不到命令的问题
2018/05/15 NodeJs
说说Vue.js中的functional函数化组件的使用
2019/02/12 Javascript
Node.js 路由的实现方法
2019/06/05 Javascript
详解vue beforeRouteEnter 异步获取数据给实例问题
2019/08/09 Javascript
vue 框架下自定义滚动条(easyscroll)实现方法
2019/08/29 Javascript
javascript移动端 电子书 翻页效果实现代码
2019/09/07 Javascript
Vuex的实战使用详解
2019/10/31 Javascript
解决vue更新路由router-view复用组件内容不刷新的问题
2019/11/04 Javascript
在elementui中Notification组件添加点击事件实例
2020/11/11 Javascript
python字典get()方法用法分析
2015/04/17 Python
Python标准库defaultdict模块使用示例
2015/04/28 Python
Python实现的拉格朗日插值法示例
2019/01/08 Python
Django-migrate报错问题解决方案
2020/04/21 Python
Vs Code中8个好用的python 扩展插件
2020/10/12 Python
python 用opencv实现图像修复和图像金字塔
2020/11/27 Python
AmazeUI图片轮播效果的示例代码
2020/08/20 HTML / CSS
马来西亚网上购物平台:ezbuy
2018/02/13 全球购物
纽约和芝加哥当天送花:Ode à la Rose
2019/07/05 全球购物
简述安装Slackware Linux系统的过程
2012/05/08 面试题
学习心得体会
2014/01/01 职场文书
优秀团支部事迹材料
2014/02/08 职场文书
《傅雷家书》教学反思
2014/04/20 职场文书
保研推荐信格式
2015/03/25 职场文书
员工手册编写范本
2015/05/14 职场文书