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实现把xml或xsl转换为html格式
Apr 08 Python
python复制与引用用法分析
Apr 08 Python
Python 常用的安装Module方式汇总
May 06 Python
Python编程对列表中字典元素进行排序的方法详解
May 26 Python
Python 多核并行计算的示例代码
Nov 07 Python
Python爬虫实现获取动态gif格式搞笑图片的方法示例
Dec 24 Python
Python3.5装饰器原理及应用实例详解
Apr 30 Python
Django框架首页和登录页分离操作示例
May 28 Python
python各层级目录下import方法代码实例
Jan 20 Python
python PIL模块的基本使用
Sep 29 Python
python爬不同图片分别保存在不同文件夹中的实现
Apr 02 Python
python的html标准库
Apr 29 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函数之error_reporting(E_ALL ^ E_NOTICE)详细说明
2011/07/01 PHP
解析PHP中intval()等int转换时的意外异常情况
2013/06/21 PHP
php使用数组填充下拉列表框的方法
2015/03/31 PHP
PHP自定义递归函数实现数组转JSON功能【支持GBK编码】
2018/07/17 PHP
php使用环形链表解决约瑟夫问题完整示例
2018/08/07 PHP
Valerio 发布了 Mootools
2006/09/23 Javascript
TreeView 用法(有代码)(asp.net)
2011/07/15 Javascript
stream.js 一个很小、完全独立的Javascript类库
2011/10/28 Javascript
Javascript浮点数乘积运算出现多位小数的解决方法
2014/02/17 Javascript
jquery动态改变form属性提交表单
2014/06/03 Javascript
JavaScript中的普通函数与构造函数比较
2015/04/07 Javascript
javascript实现带下拉子菜单的导航菜单效果
2015/05/14 Javascript
jquery实现简单的轮换出现效果实例
2015/07/23 Javascript
详解javascript高级定时器
2015/12/31 Javascript
详解React-Todos入门例子
2016/11/08 Javascript
jquery编写日期选择器
2017/03/16 Javascript
nodejs模块nodemailer基本使用-邮件发送示例(支持附件)
2017/03/28 NodeJs
vue.js实现价格格式化的方法
2017/05/23 Javascript
js自定义Tab选项卡效果
2017/06/05 Javascript
解决Layui选择全部,换页checkbox复选框重新勾选的问题方法
2018/08/14 Javascript
react.js组件实现拖拽复制和可排序的示例代码
2018/08/20 Javascript
微信小程序时间轴实现方法示例
2019/01/14 Javascript
node实现简单的增删改查接口实例代码
2019/08/22 Javascript
jquery使用echarts实现有向图可视化功能示例
2019/11/25 jQuery
Python的SQLalchemy模块连接与操作MySQL的基础示例
2016/07/11 Python
利用Python爬取可用的代理IP
2016/08/18 Python
python实现一次性封装多条sql语句(begin end)
2020/06/06 Python
python 爬取免费简历模板网站的示例
2020/09/27 Python
numpy实现RNN原理实现
2021/03/02 Python
HTML5在微信内置浏览器下右上角菜单的调整字体导致页面显示错乱的问题
2021/01/19 HTML / CSS
物流管理专业应届生求职信
2013/11/21 职场文书
2015年服务员工作总结
2015/04/08 职场文书
2015年纪委工作总结
2015/05/13 职场文书
实例讲解Python中sys.argv[]的用法
2021/06/03 Python
Python可视化学习之matplotlib内置单颜色
2022/02/24 Python
vue实现滑动解锁功能
2022/03/03 Vue.js