在做自动化测试时,遇到两种情况需要判断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判断sqlite连接状态_python3 自动识别usb连接状态,即对usb重连的判断方法相关推荐

  1. python识别收件地址_Python3 自动识别地址信息

    1. 字符串提取信息(姓名, 手机号码, 地址) import re def extract_info(list_value): mobile = str() name = address = lis ...

  2. 使用花生壳远程连接服务器,服务器的IP地址改变时,重连服务器的方法

    这个事情是我经历过的,想分享给大家,同时也做个自己的记录. 不知道审核为什么非说这篇是个广告???!!!审核的人一定没用过花生壳这个软件吧!!我又没有引导大家进行消费,只是告诉大家在出现这个问题的时候 ...

  3. Android之判断USB传输模式与USB连接状态

    1.监听UsbManager.ACTION_USB_STATE public class UsbManager {private static final String TAG = "Usb ...

  4. Android 如何判断手机处于电源充电状态还是USB连接状态?

    IntentFilter ifilter = new IntentFilter(Intent.ACTION_BATTERY_CHANGED); Intent batteryStatusIntent = ...

  5. android判断usb已连接,android 判断是否有网络连接(usb连接电脑问题)

    找到很多判断网络连接的工具类,如下: package client.verbank.mtp.allone.util; import android.app.Activity; import andro ...

  6. python判定串口已连接_python 自动识别并连接串口的实现

    这个属于我项目中一个函数,跟大家分享一下我的思路及最终实现 在编写串口通信工具中,需要实现一个函数,自动找到对应com 口,并且连接该com口,保证后续通信正常 作为初始化过程的一部分. 思路 在wi ...

  7. Android之判断网络状态(网络的连接,改变,和判断2G/3G/4G)

    现在app大多都需要从网络上获得数据.所以访问网络是在所难免.但是再访问网络之前,我们应该先做一下网络的状态判断.其实在访问网络之前我们要做一些状态判断,对应一些状态判断来做处理,并不是直接使用Htt ...

  8. python数据存储系列教程——python操作sqlite数据库:连接、增删查改、指令执行

    全栈工程师开发手册 (作者:栾鹏) python教程全解 python操作sqlite数据库 sqlite数据库以.db格式的文件形式存在,所以不需要安装驱动和应用系统,在标准库中也集成了sqlite ...

  9. nodejs (usb)连接打印机 获取打印状态(escpos-printer和node-escpos)检测USB端口的热插拔

    本文可以提供: 1.检测USB端口的热插拔 2.打印机状态获取(escpos-printer和node-escpos) 3.USB进行数据交互. 问题: nodejs使用escpos-printer框 ...

最新文章

  1. Error: Could not access the Package Manager. Is the system running?
  2. bert中文预训练模型_[中文医疗预训练模型] MC-BERT
  3. 阿里云数据中台 Quick Audience 智能用户增长正式发布
  4. Silverlight-Visifire图表使用示例发布时空白页面的解决办法
  5. 深入浅出extjs第2版_LINGO实例教程第2版第2期上线
  6. 如何在Google文档中的图片周围换行
  7. java 并发 面试题_阿里面试官总结10个经典技术题:Java多线程与并发面试题
  8. LeetCode——1721.交换链表中的节点
  9. mysql时区代码_mysql时区设置为东八区
  10. 简单理解L0、L1与L2范数
  11. jQuery三天复习.md
  12. 重装win 修复ubuntu引导
  13. sql 基本操作语句笔记
  14. NFS客户端在/etc/fstab设置开机挂载后,开机时无法进入系统
  15. 性能优化-测试If-Else和if哪个性能更好
  16. SPSS中T检验的作用以及使用前提
  17. 百度地图全方位解析(一)
  18. 一二线城市互联网公司汇总,助你拿高薪!
  19. Vue常用的组件库大全【前端工程师必备】【实时更新】【移动端、PC端(web端)、数据可视化组件库(数据大屏) 、动画组件库、3D组件库】
  20. CF1601E Phys Ed Online题解

热门文章

  1. git 使用详解(8)-- tag打标签
  2. VC++屏幕抓词的技术实现
  3. 126.数据链路层有哪些协议?
  4. 为什么说现在是计算机视觉最好的时代?
  5. html没有css还有用吗,如果css足够强大了,你还会用编程的方式实现去实现css已有的功能吗?_html/css_WEB-ITnose...
  6. java---某人在玩游戏的时候输入密码123456后成功进入游戏(输错5次则被强行退出),要求用程序实现密码验证的过程。
  7. Java---简易自动取货机
  8. JVM - 常见的JVM种类
  9. DBCP使用BasicdataSource连接(两种单例模式-----饿汉和懒汉模式)
  10. 016_循环变量内建函数