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里将list中元素依次向前移动一位
Sep 12 Python
详解python时间模块中的datetime模块
Jan 13 Python
浅析Python 中整型对象存储的位置
May 16 Python
利用Python实现命令行版的火车票查看器
Aug 05 Python
python+influxdb+shell编写区域网络状况表
Jul 27 Python
小白入门篇使用Python搭建点击率预估模型
Oct 12 Python
使用python绘制二元函数图像的实例
Feb 12 Python
Pandas中DataFrame的分组/分割/合并的实现
Jul 16 Python
python实现电子书翻页小程序
Jul 23 Python
python 实现人和电脑猜拳的示例代码
Mar 02 Python
python实现文件分片上传的接口自动化
Nov 19 Python
【超详细】八大排序算法的各项比较以及各自特点
Mar 31 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水印技术
2007/02/14 PHP
php更改目录及子目录下所有的文件后缀扩展名的代码
2010/10/12 PHP
php通过数组实现多条件查询实现方法(字符串分割)
2014/05/06 PHP
PHP多文件上传类实例
2015/03/07 PHP
PHP伪造来源HTTP_REFERER的方法实例详解
2015/07/06 PHP
Thinkphp5框架简单实现钩子(Hook)行为的方法示例
2019/09/03 PHP
基于Laravel-admin 后台的自定义页面用法详解
2019/09/30 PHP
JQuery优缺点分析说明
2010/06/09 Javascript
JavaScript定义类或函数的几种方式小结
2011/01/09 Javascript
基于jQuery的可用于选项卡及幻灯的切换插件
2011/03/28 Javascript
window.showModalDialog参数传递中含有特殊字符的处理方法
2013/06/06 Javascript
jquery prop的使用介绍及与attr的区别
2013/12/19 Javascript
Nodejs学习笔记之Stream模块
2015/01/13 NodeJs
javascript实现简易计算器的代码
2016/05/31 Javascript
jQuery制作圣诞主题页面 更像是爱情影集
2016/08/10 Javascript
详解Javascript百度地图接口开发文档中的类和方法
2017/02/07 Javascript
js推箱子小游戏步骤代码解析
2018/01/10 Javascript
javascript将非数值转换为数值
2018/09/13 Javascript
JS面向对象编程基础篇(三) 继承操作实例详解
2020/03/03 Javascript
[00:20]TI9不朽观赛名额抽取
2019/08/05 DOTA
Python实现计算文件夹下.h和.cpp文件的总行数
2015/04/23 Python
django从请求到响应的过程深入讲解
2018/08/01 Python
Python 3 实现定义跨模块的全局变量和使用教程
2019/07/07 Python
python ETL工具 pyetl
2020/06/07 Python
pycharm 实现复制一行的快捷键
2021/01/15 Python
基于HTML5代码实现折叠菜单附源码下载
2015/11/27 HTML / CSS
美国在线纱线商店:Darn Good Yarn
2019/03/20 全球购物
夏威夷咖啡公司:Hawaii Coffee Company
2019/09/19 全球购物
大学生个人求职信
2014/06/02 职场文书
管理标语大全
2014/06/24 职场文书
岗位说明书怎么写
2014/07/30 职场文书
优秀教育工作者事迹材料
2014/12/24 职场文书
公司市场部岗位职责
2015/04/15 职场文书
SpringBoot集成Redis的思路详解
2021/10/16 Redis
JavaScript展开运算符和剩余运算符的区别详解
2022/02/18 Javascript
利用Java连接Hadoop进行编程
2022/06/28 Java/Android