上期回顧:AirtestIDE基本功能(二)
以下基於
python3.7;airtest1.1.8;pocoui1.0.81;airtestIDE1.2.8
USB連接
用airtestIDE連接安卓真機之前,得先確保你用PC安裝apk沒問題。
1. 插上手機,使PC可以識別出手機,一般情況下插上會自動識別,不能識別的自己去手機官網安裝驅動。
2. 打開“開發者選項”,每款手機各不一樣,這個自己搜索一下。
3. 在“開發者選項”中打開‘開啟開發者選項’、‘USB調試’、‘USB安裝’、‘允許模擬位置’。如果是第一次開啟USB調試,手機上會彈出確認界面,點確定
4. 退出各種手機助手,保證進程也要殺掉。
5. 如果本機安裝了adb環境、模擬器、手機助手,全局搜索adb.exe,全部替換為airtestIDE文件夾下的。
現在可以在airtestIDE里連接了,默認插上手機后會自動刷新設備列表,如果沒刷新就手動點一下‘刷新ADB’。
點擊設備后的‘connect’按鈕,就連接上真機了。如果你的手機連不上,或者一閃又退出了。可以嘗試添加一下連接選項,選中上圖中的‘Use Javacap’,不行就再選上‘Use ADB Orientation’。
現在airtestIDE1.2.8有個BUG,就是連接手機后,再斷開,再連的時候連不上,可以嘗試重啟IDE
如果要斷開連接,點擊上面的工具按鈕,點‘斷開當前設備’
無線連接
不推薦,除非你的WIFI環境非常穩定。
-
手機USB線連接PC,PC執行命令
adb tcpip 5555
,5555是端口號,可以是其他數字 -
進入手機wifi設備,查看IP地址,比如這里是:192.168.1.1
-
撥掉USB線,在airtestIDE中選中‘遠程設備連接’,輸入
adb connect 192.168.1.1:5555
,點‘連接’
遠程連接
同無線連接一樣,如果手機是在雲平台下(需要自己搭建),也可以用adb connect ip:port
去連接
常見問題
一、連接問題
如果無法連接,首先確保本機環境的adb可以連接。部分手機在連上USB線后需要選擇‘MTP模式’進行連接。
若能夠在 adb devices 指令的返回結果中看到自己的設備,但是無法使用AirtestIDE連接手機,可以繼續檢查以下幾個方面:
-
在設備接入IDE進行初始化時,還會在手機上安裝一個RotationWatcher.apk的應用(用於檢測手機屏幕是否旋轉),可能會在手機上有安裝apk的彈窗提醒,需要手工點擊同意安裝
-
如果是已root的手機,可能會因為本地文件夾權限已被修改,導致Airtest沒有權限將相關文件放入手機內,請檢查手機內的 /data/local/tmp 文件夾是否有寫入權限
-
如果手機曾經安裝過 STF 庫,可能會出現不能正常點擊屏幕等問題,可以嘗試清空原先安裝的STF相關文件(執行指令
adb shell rm /data/local/tmp/mini*
)后,再重新將手機連接到IDE中進行初始化 -
部分手機雖然能成功安裝 pocoservices.apk ,但是在啟動中可能會不斷提示重新安裝、無法正確啟動,此時需要檢查手機所處的網絡是否是特殊網絡(例如開了代理)、手機的開發者選項中的設置是否開啟(涉及到USB安裝和操作相關的選項,部分型號設備需要選擇取消權限監控等)。如果是VIVO/OPPO品牌手機,可能需要設置手機默認輸入法為yosemite。
二、部分廠商設備特殊問題
小米
-
在系統設置的語言和輸入法中,取消‘安全鍵盤’的選中狀態
-
部分小米手機在連接失敗時,報錯
Failure [INSTALL_FAILED_USER_RESTRICTED: Install canceled by user]
,是因為在Airtest試圖向手機中安裝apk但是被手機自動攔截了。查看手機設置-》授權管理-》USB安裝管理-》去掉USB安裝應用的相關限制
三星
-
顯示-屏幕分辨率調到最大:
部分手機設備(如部分型號三星手機)在連上AirtestIDE后,顯示出的手機畫面不能撐滿整個屏幕,請在“設置”-“顯示”中將“屏幕分辨率”調至 “WQHD” -
在開發者選項中,打開未知來源、取消權限監控。
華為
-
輸入法設置中,取消安全輸入
-
開發者選項->監控ADB安裝應用取消,打開僅充電模式下允許調試
-
權限監控->設置->自動配置權限
-
部分華為型號的手機,可能出現點擊位置與實際位置不符的情況(mate20pro, mate7等),需要在 設置-顯示-屏幕分辨率 中,將分辨率設置為最高即可。
-
如果華為手機出現poco在啟動后十幾秒內自動斷開的話,可以檢查一下手機管家的版本號是否大於8.0,如果是的話,就在手機管家->啟動管理里面,找到pocoservice,勾選允許自啟動和允許后台活動
vivo
-
取消安全輸入,如果遇到Poco初始化失敗、text接口無法調用的問題,可以在輸入法設置中將Yosemite輸入法設置為默認
-
部分機型需要 在開發者選項中打開安全權限 ,否則可能在初始化poco的時候報錯
-
如果vivo輸密碼的時候出現黑屏,可以在嘗試把安全性設置里的 安全鍵盤 關閉掉再重試。如果沒找到 安全鍵盤 的設置,可以找一下vivo的設置->安全與隱私-> 防止惡意截屏錄屏 ,然后把防止惡意截屏錄屏關掉就好了。
-
如果有 usb模擬點擊 選項的話,一定要點開,否則運行腳本可能會報錯:
OPPO
-
開發者選項的最底部,勾選 禁止監控權限
-
部分OPPO機型在初始化Poco時,或者調用 text() 接口時,會失敗報錯,原因可能是因為安裝或者切換Yosemite輸入法失敗(需要輸入OPPO賬號密碼才能切換)。此時可以先到系統設置-輸入法設置里,將Yosemite輸入法設置為默認輸入法,如果尚未安裝Yosemite輸入法,可以在
AirtestIDE\airtest\core\android\static\apks
目錄下找到它並且手工安裝到手機上之后,即可開始使用Poco功能以及 text() 接口。
魅族
魅族手機部分型號無法直接通過ADB進行連接,解決方案:
https://www.zhihu.com/question/26245688/answer/37621798
LG
-
LG手機需要選擇充電模式才能正確打開USB調試,識別序列號:
-
在開發者選項中勾選允許模仿位置
一加
一加手機在使用poco的時候,會出現重復安裝的問題,報錯:
unable to launch AndroiduiautomationPoco
此時需要將pocoservice.apk的電池優化關掉,改成“不優化”
三、全面屏問題
IDE投屏位置發生偏移,自定義渲染分辨率
在一些不支持全面屏手機的app,畫面不能充滿整個屏幕的時候,出現黑邊,poco定位發生偏移。
進入設置,勾選采用渲染分辨率,然后輸入豎屏模式下的渲染分辨率,點擊OK即可. 渲染分辨率為用逗號隔開的四個數字,數字分別代表豎屏模式下的 offset_x, offset_y, offset_width, offset_heigt
比如本例中在 1080*2220 分辨率下的大魚來了,它在手機上會有兩個黑邊,上黑邊高度為 100px ,畫面高度為2020px ,下黑邊高度為 100px ,所以它的渲染分辨率則為(0 ,100 ,1080 ,2020)
腳本運行發生偏移
當app不支持全面屏,出現黑邊,運行poco點擊的腳本的時候,會發生偏移,像下圖執行poco("PauseButton").click()
一樣,實際點擊位置不符合預期。
確保當前poco或IDE為最新版本,關閉下圖的 虛擬鍵盤,然后在腳本中調用poco.use_render_resolution()
, 讓poco切換為當前畫面渲染分辨率,運行腳本,即可准確點擊。
對於Airtest無法支持的全面屏設備,可以自定義渲染分辨率::
poco.use_render_resolution(True, (0 ,100 ,1080 ,2020))
如果頁面切換,從不支持全面屏的畫面切換到支持全面屏的畫面,即有黑邊的頁面->無黑邊頁面,需要重新設置poco分辨率,傳入"False",poco.use_render_resolution(False)
,poco會切換成手機完整分辨率。
如當前為多機運行,同時存在普通屏手機和全面屏手機,而app不支持全面屏的時候,需要關閉所有手機的虛擬鍵盤,腳本按照支持全面屏的腳本編寫。
四、其他常見問題
部分設備“返回”-“主頁”-“菜單”等按鈕失效
-
部分設備不能正確響應一些系統按鈕操作,例如 HOME、BACK等:vivo Y55A、vivo Y67、vivo X20 Plus(屏幕指紋版)、紅米 3X (Redmi 3X)、小米 5C (Xiaomi 5C)
-
部分機型由於系統定制原因,text輸入文字時,會發生腳本異常退出問題:vivo Y55A
請在腳本內自行 catch 錯誤,或使用poco("xxx").set_text("input")
使用text()接口無法在密碼框中輸入密碼或出現IDE窗口卡死
部分廠商(例如華為、VIVO等)的某些型號手機限制了密碼框的輸入。這部分手機設置內的安全選項默認是開啟狀態,所以強制在輸入密碼時必須使用 系統鍵盤輸入 (即安全輸入鍵盤)。這樣會導致需要輸入密碼時,直接使用airtest的text()會無法輸入內容,所以需要手動關閉安全輸入選項后,才能正常輸入密碼內容:
另外有部分VIVO手機,在腳本點擊到輸入密碼窗口的時候,IDE的可視化窗口可能會卡死,不會實時更新手機屏幕畫面,導致腳本會報找不到圖片的錯誤。
這時候可以關閉手機上防惡意截錄屏選項和安全輸入選項,就不會出現腳本點擊到輸入密碼框時,IDE可視化窗口卡死的情況:
刷出重復設備
刷新時發現兩台同樣的設備,狀態各為device和offline。
一般因為開啟了手機助手,關掉后再次刷新即可。
手機能夠連接,但是設備畫面旋向不對
連接設備時勾選use ADB orientation
參數
手機能夠連接,但是無法點擊屏幕
如果手機能正常連接到AirtestIDE,但是使用鼠標操作屏幕無響應,提示 minitouch 初始化失敗 ,請首先確認,手機設置中是否有 允許模擬點擊位置 選項,並且處於激活狀態(主要是MIUI手機有這個設置)
如果問題依舊,可以嘗試先斷開手機,在connect按鈕的下拉菜單中勾選 Use ADB touch。
然后再點擊connect按鈕連接手機,此時應該可以使用鼠標操作屏幕了。
如果遇到報錯:
Unable to open device /dev/input/event3 for inspectionopen: Permission denied
可以運行指令adb shell chmod 777 /dev/input/*
來賦予/dev/input
目錄權限(該操作可能需要手機root權限,如何使用adb shell請自行查詢網上資料)
---------------------------------------------------------------------------------
關注微信公眾號即可在手機上查閱,並可接收更多測試分享~