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实现抓取页面上链接的简单爬虫分享
Jan 21 Python
在win和Linux系统中python命令行运行的不同
Jul 03 Python
Python3中使用urllib的方法详解(header,代理,超时,认证,异常处理)
Sep 21 Python
django进阶之cookie和session的使用示例
Aug 17 Python
python如何发布自已pip项目的方法步骤
Oct 09 Python
Python字典中的键映射多个值的方法(列表或者集合)
Oct 17 Python
Python3安装pip工具的详细步骤
Oct 14 Python
基于Tensorflow高阶读写教程
Feb 10 Python
Python scrapy爬取小说代码案例详解
Jul 09 Python
解决redis与Python交互取出来的是bytes类型的问题
Jul 16 Python
Django 如何实现文件上传下载
Apr 08 Python
virtualenv隔离Python环境的问题解析
Jun 21 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中防止恶意刷新页面的代码小结
2012/10/31 PHP
jquery JSON的解析方式
2009/07/25 Javascript
javascript delete 使用示例代码
2010/03/29 Javascript
javascript实现依次输入input自动定焦
2014/12/23 Javascript
深入理解JavaScript系列(22):S.O.L.I.D五大原则之依赖倒置原则DIP详解
2015/03/05 Javascript
网页从弹窗页面单选框传值至父页面代码分享
2015/09/29 Javascript
Javascript实现图片轮播效果(一)让图片跳动起来
2016/02/17 Javascript
Google 地图控件集详解及实例代码
2016/08/06 Javascript
AngularJs  Understanding Angular Templates
2016/09/02 Javascript
使用vue.js编写蓝色拼图小游戏
2017/03/17 Javascript
layer弹窗插件操作方法详解
2017/05/19 Javascript
vue.js获取数据库数据实例代码
2017/05/26 Javascript
vue源码入口文件分析(推荐)
2018/01/30 Javascript
js实现左右两侧浮动广告
2018/07/09 Javascript
jQuery实现的五星点评功能【案例】
2019/02/18 jQuery
nuxt.js服务端渲染中axios和proxy代理的配置操作
2020/11/06 Javascript
基于vue+echarts数据可视化大屏展示的实现
2020/12/25 Vue.js
Python datetime时间格式化去掉前导0
2014/07/31 Python
python字符串连接方式汇总
2014/08/21 Python
django实现分页的方法
2015/05/26 Python
用Python解决x的n次方问题
2019/02/08 Python
python语言元素知识点详解
2019/05/15 Python
Pycharm新手教程(只需要看这篇就够了)
2019/06/18 Python
利用rest framework搭建Django API过程解析
2019/08/31 Python
TensorFlow 输出checkpoint 中的变量名与变量值方式
2020/02/11 Python
python调用API接口实现登陆短信验证
2020/05/10 Python
django美化后台django-suit的安装配置操作
2020/07/12 Python
理解Django 中Call Stack机制的小Demo
2020/09/01 Python
python正则表达式re.match()匹配多个字符方法的实现
2021/01/27 Python
Matplotlib animation模块实现动态图
2021/02/25 Python
百度软件工程师职位
2013/02/14 面试题
团员的自我评价
2013/12/01 职场文书
化妆品店促销方案
2014/02/24 职场文书
特此通知格式
2015/04/27 职场文书
导游词之烟台威海蓬莱
2019/11/14 职场文书
Python 详解通过Scrapy框架实现爬取CSDN全站热榜标题热词流程
2021/11/11 Python