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 相关文章推荐
如何准确判断请求是搜索引擎爬虫(蜘蛛)发出的请求
Oct 13 Python
Python socket实现简单聊天室
Apr 01 Python
python 实现判断ip连通性的方法总结
Apr 22 Python
Python向Excel中插入图片的简单实现方法
Apr 24 Python
关于python列表增加元素的三种操作方法
Aug 22 Python
十分钟搞定pandas(入门教程)
Jun 21 Python
如何使用Python标准库进行性能测试
Jun 25 Python
Python3常用内置方法代码实例
Nov 18 Python
python3爬取torrent种子链接实例
Jan 16 Python
Python多线程Threading、子线程与守护线程实例详解
Mar 24 Python
python图片合成的示例
Nov 09 Python
pycharm 多行批量缩进和反向缩进快捷键介绍
Jan 15 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/04/18 PHP
php 字符串压缩方法比较示例
2014/01/23 PHP
yii2控制器Controller Ajax操作示例
2016/07/23 PHP
Thinkphp5行为使用方法汇总
2017/12/21 PHP
PHP7扩展开发之hello word实现方法详解
2018/01/15 PHP
php学习笔记之mb_strstr的基本使用
2018/02/03 PHP
JQuery读取XML文件数据并显示的实现代码
2009/12/16 Javascript
JS判断数组中是否有重复值得三种实用方法
2013/08/16 Javascript
鼠标移到图片上变大显示而不是放大镜效果
2014/06/15 Javascript
jQuery链使用指南
2015/01/20 Javascript
深入理解JavaScript系列(48):对象创建模式(下篇)
2015/03/04 Javascript
jQuery获得指定元素坐标的方法
2015/04/14 Javascript
JS根据key值获取URL中的参数值及把URL的参数转换成json对象
2015/08/26 Javascript
js实现跨域的4种实用方法原理分析
2015/10/29 Javascript
Vue.js教程之计算属性
2016/11/11 Javascript
jquery表单插件form使用方法详解
2017/01/20 Javascript
vue-cli webpack 引入swiper的操作方法
2018/09/15 Javascript
Vue2.x通用编辑组件的封装及应用详解
2019/05/28 Javascript
Python 中urls.py:URL dispatcher(路由配置文件)详解
2017/03/24 Python
教大家玩转Python字符串处理的七种技巧
2017/03/31 Python
Python中实现switch功能实例解析
2018/01/11 Python
Python切片索引用法示例
2018/05/15 Python
windows下cx_Freeze生成Python可执行程序的详细步骤
2018/10/09 Python
python3.6使用SMTP协议发送邮件
2020/05/20 Python
python rolling regression. 使用 Python 实现滚动回归操作
2020/06/08 Python
常用UNIX 命令(Linux的常用命令)
2015/12/26 面试题
《花的勇气》教后反思
2014/02/12 职场文书
人民教师的自我评价分享
2014/02/21 职场文书
迎元旦广播稿
2014/02/22 职场文书
教育技术学专业职业规划书
2014/03/03 职场文书
基层干部个人对照检查及整改措施
2014/10/28 职场文书
《认识钟表》教学反思
2016/02/16 职场文书
高中历史教学反思
2016/02/19 职场文书
2016年圣诞节义工活动总结
2016/04/01 职场文书
导游词之镇江西津古渡
2019/11/06 职场文书
HTML+JS实现在线朗读器
2022/02/15 Javascript