日韩久久久精品,亚洲精品久久久久久久久久久,亚洲欧美一区二区三区国产精品 ,一区二区福利

python3 自動識別usb連接狀態(tài),即對usb重連的判斷方法

系統(tǒng) 1811 0

在做自動化測試時,遇到兩種情況需要判斷usb是否已連接上(注,本文僅針對用adb命令來control手機(jī))

一種是在開測時(前提是同時要測試多臺), 希望等待所有設(shè)備usb全部識別后同時進(jìn)行測試。對于這一種,當(dāng)然是可以另開一個窗口不斷的輸入adb devices來檢測,但不夠AI。

一種是在測試過程中有時usb會自動斷開,這時如果不判斷usb是否有重新連接的話,則測試還會往下執(zhí)行,測試指定是失敗的。

第一種情況: 其思路還是要利用adb devices來不斷的獲取當(dāng)前已連接的設(shè)備id。

1.先獲取一個devlist, 并計(jì)算當(dāng)前已連接的設(shè)備數(shù).

2.利用while循環(huán),當(dāng)重新獲取一個devlist時,其設(shè)備數(shù)大于之前的設(shè)備數(shù),則遍歷new devlist,當(dāng)new device不在old devlist里時,就print出deviceid, 即實(shí)現(xiàn)了對usb的實(shí)時識別并打印了.

具體實(shí)現(xiàn)如下:

            
import os
from time import sleep
 
# 獲取設(shè)備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('請輸入每次要同時連接的設(shè)備數(shù):')
number = int(connectdevice.strip())
 
while True:
  lists = getdevlist()
  devnum = len(lists)
  id = 1
  tempdevlist = getdevlist()
  if devnum < number:
    print(f'\n設(shè)備未全部識別,應(yīng)識別{number}臺設(shè)備!\n當(dāng)前已識別{devnum}臺設(shè)備,請連接設(shè)備并等待識別:\n\n')
    for i in range(devnum):
      print(f'設(shè)備{id}: {lists[i]}')
      id = id + 1
  # 等待識別所有設(shè)備
  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'設(shè)備{id}: {lists[i]}')
          id = id + 1
          tempdevlist = getdevlist()
      devnum = curnum
    
  print(f'\n所有設(shè)備已全部識別!當(dāng)前有連接{len(getdevlist())}臺設(shè)備.\n\n')

          

第二種情況: 第二種情況的前提的已知當(dāng)前已連接設(shè)備的deviceid, 這個不難理解也不難獲取,其思路跟第一種情況也差不太多,不過我將其封裝成了一個函數(shù). 應(yīng)用場景其實(shí)在實(shí)際應(yīng)用過程中,總有那個一兩個地方,總會概率的usb斷開然后又自動連接上,但這樣就會執(zhí)行失敗,故對這樣的概率會fail的場景先要做到了然于胸,才能在實(shí)適當(dāng)?shù)牡胤疆?dāng)判斷來進(jìn)行重連,做到代碼簡潔。

            
import os
from time import sleep
 
def reconnectAction(deviceid):
  devlist = getdevlist()
  print(f'設(shè)備{deviceid}正在嘗試重連.')
  id = 1
  while deviceid not in devlist:
    print(f'第{id}次 ', end = ' ')
    devtuple = getdevlist()
    id = id + 1
  print(f'\n設(shè)備{deviceid}重新建立連接成功.')
  sleep(1)
 
 
# example:
if __name__ == '__main__':
  deviceid = '12lk34fkjaaf'
  if clickScreen(openfilemanager, deviceid) != 0:
    print(f'{openfilemanager[1]}:執(zhí)行失敗‘)
    reconnectAction(deviceid)
    clickScreen(openfilemanager, deviceid)

          

OK, 任務(wù)完成。

以上這篇python3 自動識別usb連接狀態(tài),即對usb重連的判斷方法就是小編分享給大家的全部內(nèi)容了,希望能給大家一個參考,也希望大家多多支持腳本之家。


更多文章、技術(shù)交流、商務(wù)合作、聯(lián)系博主

微信掃碼或搜索:z360901061

微信掃一掃加我為好友

QQ號聯(lián)系: 360901061

您的支持是博主寫作最大的動力,如果您喜歡我的文章,感覺我的文章對您有幫助,請用微信掃描下面二維碼支持博主2元、5元、10元、20元等您想捐的金額吧,狠狠點(diǎn)擊下面給點(diǎn)支持吧,站長非常感激您!手機(jī)微信長按不能支付解決辦法:請將微信支付二維碼保存到相冊,切換到微信,然后點(diǎn)擊微信右上角掃一掃功能,選擇支付二維碼完成支付。

【本文對您有幫助就好】

您的支持是博主寫作最大的動力,如果您喜歡我的文章,感覺我的文章對您有幫助,請用微信掃描上面二維碼支持博主2元、5元、10元、自定義金額等您想捐的金額吧,站長會非常 感謝您的哦!!!

發(fā)表我的評論
最新評論 總共0條評論
主站蜘蛛池模板: 陈巴尔虎旗| 富源县| 镇坪县| 闵行区| 丽江市| 巴林右旗| 吉安县| 牙克石市| 彰化市| 宣化县| 金昌市| 巴林右旗| 灵武市| 教育| 漳平市| 西青区| 商洛市| 饶河县| 钦州市| 绥滨县| 永州市| 闽侯县| 龙陵县| 高尔夫| 集贤县| 会东县| 普定县| 英吉沙县| 正阳县| 威远县| 巴中市| 吉林省| 盐城市| 五华县| 绵竹市| 青川县| 新竹县| 武义县| 鹤峰县| 永清县| 呼伦贝尔市|