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中的元组与逻辑运算符
Oct 13 Python
举例讲解Python中的迭代器、生成器与列表解析用法
Mar 20 Python
Caffe均值文件mean.binaryproto转mean.npy的方法
Jul 09 Python
django 将model转换为字典的方法示例
Oct 16 Python
Python之lambda匿名函数及map和filter的用法
Mar 05 Python
Python通过TensorFlow卷积神经网络实现猫狗识别
Mar 14 Python
Python字符串的常见操作实例小结
Apr 08 Python
Python面向对象实现一个对象调用另一个对象操作示例
Apr 08 Python
Python 输出详细的异常信息(traceback)方式
Apr 08 Python
python 基于pygame实现俄罗斯方块
Mar 02 Python
Python面向对象之内置函数相关知识总结
Jun 24 Python
Python中的turtle画箭头,矩形,五角星
Mar 16 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 MVC
2014/09/10 PHP
[企业公众号]升级到[企业微信]之后发送消息失败的解决方法
2017/06/30 PHP
再谈ie和firefox下的document.all属性
2009/10/21 Javascript
javascript 词法作用域和闭包分析说明
2010/08/12 Javascript
JavaScript可否多线程? 深入理解JavaScript定时机制
2012/05/23 Javascript
JQuery实现用户名无刷新验证的小例子
2013/03/22 Javascript
js对象内部访问this修饰的成员函数示例
2014/04/27 Javascript
使用GruntJS构建Web程序之Tasks(任务)篇
2014/06/06 Javascript
分享20款美化网站的 jQuery Lightbox 灯箱插件
2014/10/10 Javascript
JavaScript分析、压缩工具JavaScript Analyser
2014/12/31 Javascript
JS实现简单的二维矩阵乘积运算
2016/01/26 Javascript
angularjs使用directive实现分页组件的示例
2017/02/07 Javascript
js实现随机点名系统(实例讲解)
2017/10/18 Javascript
vue.js2.0点击获取自己的属性和jquery方法
2018/02/23 jQuery
基于rollup的组件库打包体积优化小结
2018/06/18 Javascript
Vue-CLI 3.X 部署项目至生产服务器的方法
2019/03/22 Javascript
详解微信小程序文件下载--视频和图片
2019/04/24 Javascript
Vue CL3 配置路径别名详解
2019/05/30 Javascript
[01:05:40]2014 DOTA2国际邀请赛中国区预选赛 5 23 CIS VS DT第三场
2014/05/24 DOTA
[04:00]黄浦江畔,再会英雄——完美世界DOTA2 TI9应援视频
2019/07/31 DOTA
[45:50]完美世界DOTA2联赛PWL S3 CPG vs Forest 第二场 12.16
2020/12/17 DOTA
Python列表list操作符实例分析【标准类型操作符、切片、连接字符、列表解析、重复操作等】
2017/07/24 Python
python Crypto模块的安装与使用方法
2017/12/21 Python
python处理csv数据动态显示曲线实例代码
2018/01/23 Python
Python自定义线程类简单示例
2018/03/23 Python
python批量将excel内容进行翻译写入功能
2019/10/10 Python
美国专业级皮肤病和spa品质护肤品的高级零售网站:SkinCareRx
2017/02/06 全球购物
ECCO爱步加拿大官网:北欧丹麦鞋履及皮具品牌
2017/07/08 全球购物
新加坡交友网站:be2新加坡
2019/04/10 全球购物
医学生个人求职信范文
2013/09/24 职场文书
动物科学专业毕业生的自我评价
2013/11/29 职场文书
2015年学校政教处工作总结
2015/05/26 职场文书
运动会通讯稿50字
2015/07/20 职场文书
2015年除四害工作总结
2015/07/23 职场文书
MySql开发之自动同步表结构
2021/05/28 MySQL
nginx配置文件使用环境变量的操作方法
2021/06/02 Servers