python判断sqlite连接状态_python3 自动识别usb连接状态,即对usb重连的判断方法
在做自動(dòng)化測(cè)試時(shí),遇到兩種情況需要判斷usb是否已連接上(注,本文僅針對(duì)用adb命令來(lái)control手機(jī))
一種是在開(kāi)測(cè)時(shí)(前提是同時(shí)要測(cè)試多臺(tái)), 希望等待所有設(shè)備usb全部識(shí)別后同時(shí)進(jìn)行測(cè)試。對(duì)于這一種,當(dāng)然是可以另開(kāi)一個(gè)窗口不斷的輸入adb devices來(lái)檢測(cè),但不夠AI。
一種是在測(cè)試過(guò)程中有時(shí)usb會(huì)自動(dòng)斷開(kāi),這時(shí)如果不判斷usb是否有重新連接的話(huà),則測(cè)試還會(huì)往下執(zhí)行,測(cè)試指定是失敗的。
第一種情況:其思路還是要利用adb devices來(lái)不斷的獲取當(dāng)前已連接的設(shè)備id。
1.先獲取一個(gè)devlist, 并計(jì)算當(dāng)前已連接的設(shè)備數(shù).
2.利用while循環(huán),當(dāng)重新獲取一個(gè)devlist時(shí),其設(shè)備數(shù)大于之前的設(shè)備數(shù),則遍歷new devlist,當(dāng)new device不在old devlist里時(shí),就print出deviceid, 即實(shí)現(xiàn)了對(duì)usb的實(shí)時(shí)識(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('請(qǐng)輸入每次要同時(shí)連接的設(shè)備數(shù):')
number = int(connectdevice.strip())
while True:
lists = getdevlist()
devnum = len(lists)
id = 1
tempdevlist = getdevlist()
if devnum < number:
print(f'\n設(shè)備未全部識(shí)別,應(yīng)識(shí)別{number}臺(tái)設(shè)備!\n當(dāng)前已識(shí)別{devnum}臺(tái)設(shè)備,請(qǐng)連接設(shè)備并等待識(shí)別:\n\n')
for i in range(devnum):
print(f'設(shè)備{id}: {lists[i]}')
id = id + 1
# 等待識(shí)別所有設(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è)備已全部識(shí)別!當(dāng)前有連接{len(getdevlist())}臺(tái)設(shè)備.\n\n')
第二種情況:第二種情況的前提的已知當(dāng)前已連接設(shè)備的deviceid, 這個(gè)不難理解也不難獲取,其思路跟第一種情況也差不太多,不過(guò)我將其封裝成了一個(gè)函數(shù). 應(yīng)用場(chǎng)景其實(shí)在實(shí)際應(yīng)用過(guò)程中,總有那個(gè)一兩個(gè)地方,總會(huì)概率的usb斷開(kāi)然后又自動(dòng)連接上,但這樣就會(huì)執(zhí)行失敗,故對(duì)這樣的概率會(huì)fail的場(chǎng)景先要做到了然于胸,才能在實(shí)適當(dāng)?shù)牡胤疆?dāng)判斷來(lái)進(jìn)行重連,做到代碼簡(jiǎ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 自動(dòng)識(shí)別usb連接狀態(tài),即對(duì)usb重連的判斷方法就是小編分享給大家的全部?jī)?nèi)容了,希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。
《新程序員》:云原生和全面數(shù)字化實(shí)踐50位技術(shù)專(zhuān)家共同創(chuàng)作,文字、視頻、音頻交互閱讀總結(jié)
以上是生活随笔為你收集整理的python判断sqlite连接状态_python3 自动识别usb连接状态,即对usb重连的判断方法的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: 锐捷ap怎么设置_WiFi又不稳定?怎么
- 下一篇: python print换行_聊聊 pr