iT邦幫忙

第 12 屆 iThome 鐵人賽

DAY 2
2
Software Development

自動化測試開發的美麗與憂愁系列 第 2

[Python] Bomb!! Uiautomator x Thread = USB Port 掰掰 (平行控制)

  • 分享至 

  • xImage
  •  

由於筆者需要使用USB有線的方式做多支手機平行控制, 通常做平行處理都是使用multiple thread 的方式進行,
就很天真地認為多支手機控制應該也可以使用 Uiautomator2 (手機控制的Fraemwork) x multiple thread 的方式進行

but ....

這樣做之後, PC的USB port 就掰了.

連結架構圖及作法:

USB Hub 使用市面上USB 2.0/3.0/ 3.1的Hub 連接到PC端的USB 2.0/ 3.0/ 3.1的port 都可以

  1. 使用weditor 錄製需要使用的自動化腳本
    • 使用pip 安裝weditor
        pip3 install -U weditor
    
    • 直接在命令行中輸入weditor即可打開
    • Python 版本: 建議使用3.6或更新的版本

行為:
(1) 回到Android Home
(2) 打開設定頁面
(3) 新增Wi-Fi profile
(4) 確定是否建立profile 成功

以下是Demo code片段:

詳細的python程式碼, 請參考ironmen2020 demo code
2. 將phoneControl function 加入multiple thread 中並開始執行
3. 程式執行到一半發現, 連線中的手機自動掉線而無法控制/ 無法再被系統偵測到
4. 檢查裝置管理員, 手機遺失. USB重插拔無效
5. 使用其他裝置插入, 發現也沒有作用
6. 確定系統的USB port 宣告陣亡 ...
/images/emoticon/emoticon02.gif

======================

事後,拆掉主機板上的水銀電池及徹底放電後. 系統的 USB port 才又恢復正常. 但執行程式後又遇到一樣的狀況.

主要原因:
UIautomator2 預設是只有使用一個port 在控制手機. 如下圖所示:

PS: 本身不支援一次控制多支手機

所以, 當用多執行緒去執行多手機控制時, 造成程式以為要在同一個port上控制多支手機的窘境, 接著就發生power surge (電流暴衝)的現象而導致那個USB port 無法使用

當造成power surge (電流暴衝)後的常見現象有以下幾種:

  • 插入USB 設備後, 系統認定裝置成Unoknown device
  • 插入USB 設備後, 系統對此設備完全沒有回應
  • 系統對串接的USB Hub 及設備都認不到
  • 重開機後, 狀況依舊

結論:

  • 這是一個很危險的操作, 有可能會讓串接在中間的USB Hub 及相關USB設備永久無法使用
  • 在測試過程中換了市售不同種類的USB Hub 都發現有相同的現象出現

參考資源:
Weditor - 手機腳本錄製工具
Uiautomator2 - Github
itronmen 2020 demo source code


上一篇
[Arduino based] 玩轉 Attiny85, 從入門到崩潰 ....
下一篇
Go 朋友 - Golang與其他語言互動的方式 (cgo)
系列文
自動化測試開發的美麗與憂愁30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言