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 29 Python
python3序列化与反序列化用法实例
May 26 Python
Pythont特殊语法filter,map,reduce,apply使用方法
Feb 27 Python
python学习 流程控制语句详解
Jun 01 Python
python中requests和https使用简单示例
Jan 18 Python
Django中更改默认数据库为mysql的方法示例
Dec 05 Python
Python SELENIUM上传文件或图片实现过程
Oct 28 Python
jenkins配置python脚本定时任务过程图解
Oct 29 Python
Python pandas库中的isnull()详解
Dec 26 Python
python利用datetime模块计算程序运行时间问题
Feb 20 Python
django rest framework 过滤时间操作
Jul 12 Python
Python开发.exe小工具的详细步骤
Jan 27 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 正则表达式的学习探讨
2013/06/06 PHP
C# WinForm中实现快捷键自定义设置实例
2015/01/23 PHP
PHP基于单例模式实现的mysql类
2016/01/09 PHP
php简单计算权重的方法示例【适合抽奖类应用】
2019/06/10 PHP
JavaScript 模拟类机制及私有变量的方法及思路
2013/07/10 Javascript
javascript中日期函数new Date()的浏览器兼容性问题
2015/09/05 Javascript
点击按钮出现60秒倒计时的简单js代码(推荐)
2016/06/07 Javascript
webstorm中配置nodejs环境及npm的实例
2018/05/15 NodeJs
解决Mac安装thrift因bison报错的问题
2018/05/17 Javascript
使用淘宝镜像cnpm安装Vue.js的图文教程
2018/05/17 Javascript
Vue 第三方字体图标引入 Font Awesome的方法
2018/09/28 Javascript
Vue.js 图标选择组件实践详解
2018/12/03 Javascript
js中数组对象去重的两种方法
2019/01/18 Javascript
vue实现后台管理权限系统及顶栏三级菜单显示功能
2019/06/19 Javascript
小程序接入腾讯位置服务的详细流程
2020/03/03 Javascript
Python中使用第三方库xlrd来写入Excel文件示例
2015/04/05 Python
详解用Python处理HTML转义字符的5种方式
2017/12/27 Python
Python测试人员需要掌握的知识
2018/02/08 Python
Python SQL查询并生成json文件操作示例
2018/08/17 Python
Python 实现Windows开机运行某软件的方法
2018/10/14 Python
Python os.access()用法实例
2019/02/18 Python
Python+opencv 实现图片文字的分割的方法示例
2019/07/04 Python
python 二维矩阵转三维矩阵示例
2019/11/30 Python
解决jupyter notebook打不开无反应 浏览器未启动的问题
2020/04/10 Python
使用Python内置模块与函数进行不同进制的数的转换
2020/04/26 Python
Python collections模块的使用方法
2020/10/09 Python
python安装第三方库如xlrd的方法
2020/10/31 Python
澳大利亚最受欢迎的超级商场每日优惠:Catch
2020/11/17 全球购物
华为python面试题
2016/05/03 面试题
财务管理专业推荐信
2013/11/19 职场文书
优秀老员工获奖感言
2014/02/15 职场文书
2014爱耳日宣传教育活动总结
2014/03/09 职场文书
高中教师评语大全
2014/04/25 职场文书
业务员辞职信范文
2015/03/02 职场文书
Spring Security中用JWT退出登录时遇到的坑
2021/10/16 Java/Android
python中redis包操作数据库的教程
2022/04/19 Python