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的Bottle框架写一个简单的服务接口的示例
Aug 25 Python
python内置函数:lambda、map、filter简单介绍
Nov 16 Python
pandas 使用apply同时处理两列数据的方法
Apr 20 Python
Python中的TCP socket写法示例
May 11 Python
对python程序内存泄漏调试的记录
Jun 11 Python
Python读取txt文件数据的方法(用于接口自动化参数化数据)
Jun 27 Python
Python爬虫实现抓取京东店铺信息及下载图片功能示例
Aug 07 Python
Python使用try except处理程序异常的三种常用方法分析
Sep 05 Python
python 监听salt job状态,并任务数据推送到redis中的方法
Jan 14 Python
window环境pip切换国内源(pip安装异常缓慢的问题)
Dec 31 Python
浅谈Pycharm的项目文件名是红色的原因及解决方式
Jun 01 Python
如何利用Matlab制作一款真正的拼图小游戏
May 11 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实现无限级分类实现代码(递归方法)
2011/01/01 PHP
Drupal 添加模块出现莫名其妙的错误的解决方法(往往出现在模块较多时)
2011/04/18 PHP
Linux下快速搭建php开发环境
2017/03/13 PHP
js bind 函数 使用闭包保存执行上下文
2011/12/26 Javascript
jquery禁用右键示例
2014/04/28 Javascript
jQuery 获取屏幕高度、宽度的简单实现案例
2016/05/17 Javascript
Bootstrap编写一个兼容主流浏览器的受众巨幕式风格页面
2016/07/01 Javascript
react.js 翻页插件实例代码
2017/01/19 Javascript
关于javascript sort()排序你可能忽略的一点理解
2017/07/18 Javascript
vuejs使用$emit和$on进行组件之间的传值的示例
2017/10/04 Javascript
浅谈让你的代码更简短,更整洁,更易读的ES6小技巧
2018/10/25 Javascript
JavaScript 双向链表操作实例分析【创建、增加、查找、删除等】
2020/04/28 Javascript
Vue ​v-model相关知识总结
2021/01/28 Vue.js
以一段代码为实例快速入门Python2.7
2015/03/31 Python
Python 两个列表的差集、并集和交集实现代码
2016/09/21 Python
对python .txt文件读取及数据处理方法总结
2018/04/23 Python
python 读取txt中每行数据,并且保存到excel中的实例
2018/04/29 Python
python字符串常用方法
2018/06/14 Python
Python实现深度遍历和广度遍历的方法
2019/01/22 Python
tensorflow使用指定gpu的方法
2020/02/04 Python
Python进程间通信multiprocess代码实例
2020/03/18 Python
Python configparser模块常用方法解析
2020/05/22 Python
编译 pycaffe时报错:fatal error: numpy/arrayobject.h没有那个文件或目录
2020/11/29 Python
pycharm中leetcode插件使用图文详解
2020/12/07 Python
大四学生毕业自荐信
2013/11/07 职场文书
生日邀请函范文
2014/01/13 职场文书
西门豹教学反思
2014/02/04 职场文书
本科毕业自我鉴定
2014/03/20 职场文书
2014广电局实施党的群众路线教育实践活动方案思想汇报
2014/09/22 职场文书
居委会个人对照检查材料思想汇报
2014/09/29 职场文书
建议书格式
2015/02/04 职场文书
幼儿园见习总结
2015/06/23 职场文书
回门宴新娘答谢词
2015/09/29 职场文书
省级三好学生主要事迹材料
2015/11/03 职场文书
2019七夕节祝福语36句,快来收藏吧
2019/08/06 职场文书
三十年再续同学情倡议书
2019/11/27 职场文书