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检测服务器是否正常
Feb 16 Python
tensorflow: variable的值与variable.read_value()的值区别详解
Jul 30 Python
Django model序列化为json的方法示例
Oct 16 Python
python面向对象入门教程之从代码复用开始(一)
Dec 11 Python
Python2 Selenium元素定位的实现(8种)
Feb 25 Python
Python读写文件基础知识点
Jun 10 Python
利用Python复制文件的9种方法总结
Sep 02 Python
在Python中使用MySQL--PyMySQL的基本使用方法
Nov 19 Python
Python paramiko 模块浅谈与SSH主要功能模拟解析
Feb 29 Python
Python-openpyxl表格读取写入的案例详解
Nov 02 Python
Jupyter Notebook 远程访问配置详解
Jan 11 Python
python代码实现备忘录案例讲解
Jul 26 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实现的单一入口应用程序实例分析
2015/09/23 PHP
Yii2超好用的日期和时间组件(值得收藏)
2016/05/05 PHP
thinkPHP通用控制器实现方法示例
2017/11/23 PHP
GreyBox技术总结(转)
2010/11/23 Javascript
在javascript中关于节点内容加强
2013/04/11 Javascript
javascript强大的日期函数代码分享
2013/09/04 Javascript
浅析javascript异步执行函数导致的变量变化问题解决思路
2016/05/13 Javascript
javascript检测移动设备横竖屏
2016/05/21 Javascript
详解如何将 Vue-cli 改造成支持多页面的 history 模式
2017/11/20 Javascript
JS控制鼠标拒绝点击某一按钮的实例
2017/12/29 Javascript
vue中使用input[type=&quot;file&quot;]实现文件上传功能
2018/09/10 Javascript
vue-router命名视图的使用讲解
2019/01/19 Javascript
利用angular自动编译andriod APK的绕坑经历分享
2019/03/08 Javascript
Vue使用Three.js加载glTF模型的方法详解
2020/06/14 Javascript
el-form 多层级表单的实现示例
2020/09/10 Javascript
vue 自定指令生成uuid滚动监听达到tab表格吸顶效果的代码
2020/09/16 Javascript
python getopt 参数处理小示例
2009/06/09 Python
Python实现国外赌场热门游戏Craps(双骰子)
2015/03/31 Python
Python发送email的3种方法
2015/04/28 Python
Python AES加密模块用法分析
2017/05/22 Python
python实现微信远程控制电脑
2018/02/22 Python
python ftp 按目录结构上传下载的实现代码
2018/09/12 Python
PyQt5+requests实现车票查询工具
2019/01/21 Python
Python安装tar.gz格式文件方法详解
2020/01/19 Python
Html5画布_动力节点Java学院整理
2017/07/13 HTML / CSS
英国床垫在线:Mattress Online
2016/12/07 全球购物
Haglöfs瑞典官方网站:haglofs火柴棍,欧洲顶级户外品牌
2018/10/18 全球购物
Nike瑞士官网:Nike CH
2021/01/18 全球购物
实习自我评价怎么写
2013/12/02 职场文书
会计电算化大学生职业规划书
2014/02/05 职场文书
会计学习心得体会
2014/09/09 职场文书
检察院院长群众路线教育实践活动个人整改措施
2014/10/04 职场文书
2014年服装销售工作总结
2014/11/27 职场文书
小学优秀班主任材料
2014/12/17 职场文书
机器人总动员观后感
2015/06/09 职场文书