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和shell实现的校验IP地址合法性脚本分享
Oct 23 Python
Python爬虫之xlml解析库(全面了解)
Aug 08 Python
Linux下Python安装完成后使用pip命令的详细教程
Nov 22 Python
Python判断对象是否为文件对象(file object)的三种方法示例
Apr 26 Python
python ChainMap的使用和说明详解
Jun 11 Python
Python使用pyserial进行串口通信的实例
Jul 02 Python
如何使用Python自动控制windows桌面
Jul 11 Python
用python实现英文字母和相应序数转换的方法
Sep 18 Python
python sklearn常用分类算法模型的调用
Oct 16 Python
python GUI库图形界面开发之PyQt5拖放控件实例详解
Feb 25 Python
解决django FileFIELD的编码问题
Mar 30 Python
自定义实现 PyQt5 下拉复选框 ComboCheckBox的完整代码
Mar 30 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
人工智能开始玩《星际争霸2》 你的操作跟得上吗?
2017/08/11 星际争霸
虫族 Zerg 历史背景
2020/03/14 星际争霸
模仿OSO的论坛(三)
2006/10/09 PHP
刷新PHP缓冲区为你的站点加速
2015/10/10 PHP
PHP开发实现微信退款功能示例
2017/11/25 PHP
在云虚拟主机部署thinkphp5项目的步骤详解
2017/12/21 PHP
通过jquery还原含有rowspan、colspan的table的实现方法
2012/02/10 Javascript
JavaScript加强之自定义event事件
2013/09/21 Javascript
document.execCommand()的用法小结
2014/01/08 Javascript
JavaScript加入收藏夹功能(兼容IE、firefox、chrome)
2014/05/05 Javascript
用NODE.JS中的流编写工具是要注意的事项
2016/03/01 Javascript
基于jquery实现轮播焦点图插件
2016/03/31 Javascript
利用JavaScript阻止表单提交的两种方法
2016/08/11 Javascript
常用JS图片滚动(无缝、平滑、上下左右滚动)代码大全(推荐)
2016/12/20 Javascript
vue 2.0组件与v-model详解
2017/03/27 Javascript
通过jquery.cookie.js实现记住用户名、密码登录功能
2018/06/20 jQuery
JS代码屏蔽F12,右键,粘贴,复制,剪切,选中,操作实例
2019/09/17 Javascript
基于Vue el-autocomplete 实现类似百度搜索框功能
2019/10/25 Javascript
JavaScript实现动态留言板
2020/03/16 Javascript
[00:12]2018DOTA2亚洲邀请赛 Somnus丶M出阵单挑
2018/04/06 DOTA
简单介绍Python中的filter和lambda函数的使用
2015/04/07 Python
利用python画一颗心的方法示例
2017/01/31 Python
Django REST为文件属性输出完整URL的方法
2017/12/18 Python
Python中的函数式编程:不可变的数据结构
2018/10/08 Python
python对html过滤处理的方法
2018/10/21 Python
python tkinter基本属性详解
2019/09/16 Python
python yield关键词案例测试
2019/10/15 Python
Python利用for循环打印星号三角形的案例
2020/04/12 Python
Pyinstaller 打包发布经验总结
2020/06/02 Python
比利时的在线灯具店:Lampen24.be
2019/07/01 全球购物
澳大利亚在线高跟鞋商店:Shoe Me
2019/11/19 全球购物
过滤器的用法
2013/10/08 面试题
入党申请书自我鉴定
2013/10/12 职场文书
酒店管理自荐信
2013/10/23 职场文书
销售活动策划方案
2014/08/26 职场文书
2015年高考寄语或鼓励的话
2015/03/23 职场文书