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中pygame模块用法实例
Oct 09 Python
Python批处理更改文件名os.rename的方法
Oct 26 Python
python实现求特征选择的信息增益
Dec 18 Python
python 根据时间来生成唯一的字符串方法
Jan 14 Python
Python实现随机生成任意数量车牌号
Jan 21 Python
python爬虫开发之使用Python爬虫库requests多线程抓取猫眼电影TOP100实例
Mar 10 Python
解决reload(sys)后print失效的问题
Apr 25 Python
详解Python 循环嵌套
Jul 09 Python
用python实现一个简单计算器(完整DEMO)
Oct 14 Python
python爬虫实现爬取同一个网站的多页数据的实例讲解
Jan 18 Python
使用python tkinter开发一个爬取B站直播弹幕工具的实现代码
Feb 07 Python
ROS系统将python包编译为可执行文件的简单步骤
Jul 25 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过滤危险html代码的函数
2008/07/22 PHP
PHP学习笔记 (1) 环境配置与代码调试
2011/06/19 PHP
php中使用getimagesize获取图片、flash等文件的尺寸信息实例
2014/04/29 PHP
PHP通过curl获取接口URL的数据方法
2018/05/31 PHP
javascript 播放器 控制
2007/01/22 Javascript
JQuery中对服务器控件 DropdownList, RadioButtonList, CheckboxList的操作总结
2011/06/28 Javascript
js 触发select onchange事件代码
2014/03/20 Javascript
Node.js中使用Log.io在浏览器中实时监控日志(等同tail -f命令)
2014/09/17 Javascript
深入理解Java线程编程中的阻塞队列容器
2015/12/07 Javascript
js点击返回跳转到指定页面实现过程
2020/08/20 Javascript
jQuery 防止相同的事件快速重复触发方法
2018/02/08 jQuery
快速了解vue-cli 3.0 新特性
2018/02/28 Javascript
解决vue build打包之后首页白屏的问题
2018/03/06 Javascript
手把手教你写一个微信小程序(推荐)
2018/10/17 Javascript
mock.js实现模拟生成假数据功能示例
2019/01/15 Javascript
Vue根据条件添加click事件的方式
2019/11/09 Javascript
[49:17]DOTA2-DPC中国联赛 正赛 Phoenix vs Dynasty BO3 第三场 1月26日
2021/03/11 DOTA
Python的加密模块md5、sha、crypt使用实例
2014/09/28 Python
跟老齐学Python之for循环语句
2014/10/02 Python
Python实现计算文件夹下.h和.cpp文件的总行数
2015/04/23 Python
Python基于回溯法子集树模板解决m着色问题示例
2017/09/07 Python
Python使用PIL模块生成随机验证码
2017/11/21 Python
PyQt5 pyqt多线程操作入门
2018/05/05 Python
python实现感知机线性分类模型示例代码
2019/06/02 Python
Python爬虫图片懒加载技术 selenium和PhantomJS解析
2019/09/18 Python
python数字类型math库原理解析
2020/03/02 Python
tensorflow转换ckpt为savermodel模型的实现
2020/05/25 Python
利用CSS3的checked伪类实现OL的隐藏显示的方法
2010/12/18 HTML / CSS
美国南部最大的家族百货公司:Belk
2017/01/30 全球购物
房地产开盘策划方案
2014/02/10 职场文书
幼儿园教学随笔感言
2014/02/23 职场文书
关于建议书的格式范文
2014/05/20 职场文书
班子四风对照检查材料思想汇报
2014/09/29 职场文书
教师批评与自我批评材料
2014/10/16 职场文书
2015年行政部工作总结
2015/04/28 职场文书
python基础入门之普通操作与函数(三)
2021/06/13 Python