前言
本期我們給同學們整理了答疑Q群中,26個同學們最容易問到的問題,后續我們還會持續整理更多常見問題幫助大家避坑噠~
1.如何輸入文字?
① 使用airtest的 text()
接口:
touch(輸入框)
text("文本")
② 使用poco的 set_text()
接口:
poco("輸入框").click()
poco("輸入框").set_text("文本")
另外,airtest和poco腳本可以混用,所以當輸入框不支持 text()
接口輸入時,可更換成poco的 set_text()
接口,同理,不支持poco輸入時,也可以更換成airtest的 text()
接口輸入。
2.minicap serve setup time out
屏幕初始化失敗,常見於高版本MIUI設備或者模擬器等;先檢查當前IDE是否為最新版本,不是請把IDE更新到最新版本;然后再嘗試在connect設備之前,下拉勾選 use javacap
,再連接設備。
3.minitouch serve setup timeout
點擊初始化失敗,常見於安卓10或者10以上的設備,解決辦法,檢查當前環境的airtest版本是否為最新的(IDE更新到最新版本,使用本地python環境把本地環境的airtest更新到最新版本)。
4.Javacap server setup timeout
設備不適用於 javacap
,在IDE連接設備之前 請勿勾選 use javacap
,腳本連接設備的字符串也不要帶 ?cap_method=JAVACAP
。最后請確保當前使用的是最新版本的airtest。
5.如何顯示坐標
頂部菜單欄,選項-設置,只勾選實時坐標顯示,則顯示絕對坐標;同時勾選實時坐標和相對坐標,則顯示相對坐標。(Airtest使用絕對坐標系,poco使用相對坐標系)
# 點擊坐標為[100,100]的位置
touch([100,100])
# 點擊屏幕中心[0.5,0.5]
poco.click([0.5,0.5])
6.圖像識別不准確
請參考官方公眾號“AirtestProject”的教程推文:
- 了解圖像識別原理與算法:3分鍾教會你選擇合適的圖像識別算法
- 提高圖像識別的兼容性①:寫了10000條Airtest截圖腳本總結出來的截圖經驗,趕緊收藏!
- 提高圖像識別的兼容性②:截圖識別成功率太低,究竟該如何補救
7.設備連接不上
請參考官方文檔的相關內容:AirtestIDE使用文檔--設備連接--Android連接常見問題,然后根據自己的手機型號,查看1、2節內容。
不同品牌手機的相關設置名稱僅供參考,不是所有的品牌型號相關的設置名稱和位置都一樣,所以教程中提到的設置僅供同學們參考,如找不到完全相同的設置,請同學們仔細查找類似的設置。
8.模擬器連接不上
- 1)檢查是否安裝上了輸入法Yosemite,沒安裝手動安裝上
- 2)連接后黑屏或者畫面模糊等,connect之前下拉勾選
use javacap
再連接 - 3)模擬器連接更多詳情和答疑,請參考公眾號文章: 測試了5款最常見的模擬器,發現與Airtest自動化最配的竟然是...
9.poco定位報錯找不到
-
1)有時候IDE自動生成的poco定位腳本會非常長,層級也非常深,回放時可能出現找不到控件的情況;這時不建議同學們直接使用自動生成的定位腳本,可以根據UI樹詳情,另外編寫更精簡的定位腳本,推薦使用正則匹配來進行腳本定位會好一些。
-
2)如果定位腳本是同學們自己編寫的,請檢查對應的屬性或者層級關系,看是否是腳本錯誤而導致找不到元素。
-
3)如出現單獨選中調試腳本,可以找到控件,但實際運行腳本又容易找不到控件,建議在該條定位腳本之前添加足夠的
sleep()
,確保畫面跳轉穩定后,再來查找控件。
10. no module named 'airtest'、‘poco’、‘airtest-selenium’等,找不到模塊
在當前使用的python環境中,安裝上缺失的對應模塊:
pip install airtest
pip install pocoui #(不能安裝poco,如安裝了請卸載pip uninstall poco)
pip install airtest-selenium
11.poco拿不到控件,poco的支持情況
目前只有原生應用可以直接使用poco(無需接入pocoSDK),非原生應用,比如各種游戲應用、H5小程序、混合開發的應用等,都不能直接使用poco拿取控件,絕大多數的游戲支持接入對應引擎的pocoSDK之后,可以獲取控件信息。
12.輔助窗沒有刷出UI樹
- 1)除原生應用之外,其余引擎都需要接入SDK才可以查看UI樹;
- 2)檢查手機上是否已經自動安裝上poco初始化相關的2個apk(
pocoservice-debug.apk
、pocoservice-debug-androidTest.apk
),未安裝要手動安裝上; - 3)安裝輸入法
Yosemite
並設為默認輸入法 - 部分廠商的手機需要額外的設置,請參考官方文檔:AirtestIDE使用文檔--設備連接--Android連接常見問題。
13.poco刷新時間
UI樹的默認刷新時間為2秒,可以在選項--設置--poco,里面設置,設置完成后記得點擊OK保存設置。
14.invalid syntax
典型的python語法錯誤,常見於腳本未換行、縮進錯誤、缺少一邊 "
或者 (
等。
15.mac上出現很多個IDE的圖標
嘗試在IDE頂部菜單欄的選項--設置中,去掉自動補全設置的勾選。
16.record_pos、resolution表示什么
Template
類里面的參數,record_pos
計算坐標對應的中點偏移值相對於分辨率的百分比,匹配時會優先匹配這附近的畫面;resolution
記錄了截圖時的手機分辨率。
Template(r"tpl1611559272215.png", record_pos=(-0.106, -0.035), resolution=(1080, 1920))
如同學們使用的是自己截取的圖片,不填 record_pos
參數也不會對識別效果產生很大影響,如想要計算,可參考如下源碼:
17.怎么點擊軟鍵盤上面的搜索?輸入后回車?
如需點擊軟鍵盤上面的 search
按鈕,則:
text("文本",enter=False,search=True)
同理,如需輸入后回車,則 text("文本",enter=True)
,不需要回車則, text("文本",enter=False)
。
18.批量運行?多任務運行?多機運行?
目前官方文檔上有提供多機協作和用bat腳本做多機運行的實例,都在AirtestIDE使用文檔--運行腳本的章節下面,另外利用多線程方法來進行批量運行可以參考網上的教程:
- 多機協作的實操案例:“多機協作”--微信互加好友案例分析
- 用bat腳本實現批量執行的實操案例:巧用bat文件做Airtest腳本的“批量運行”
19.判斷元素/截圖存在
- airtest的,判斷截圖目標是否存在於當前畫面上:
exists(截圖)
- poco的,判斷元素是否存在:
poco("xxx").exists()
20.等待元素/截圖出現
- airtest的,等待某個截圖目標出現在當前畫面上:
wait(截圖)
- poco的,等待某個控件元素出現:
poco("xxx").wait_for_appearance()
21.assert斷言
- 斷言某個截圖目標是否存在於當前畫面上:
assert_exists(截圖)
- 斷言某個poco元素是否存在:
assert_equal(poco(xxx).exists(),"True","xxx控件存在")
22.報錯之后如何繼續執行
使用 try-except
捕捉錯誤,讓程序繼續運行。
23.不能輸入密碼?密碼界面黑屏?
應用的登錄頁面或者密碼界面一般都不給截屏錄屏的,同學們可以檢查看看你的測試設備的設置里面,有沒有安全鍵盤、防止惡意截屏錄屏之類的設置,關掉就行。
24.怎么調用別的腳本?
airtest提供 using
接口可以用來調用別的 .air
腳本。詳細使用方法和案例可以查看官方公眾號的教程推文:一個方法幫你在主腳本里添加“子腳本”的運行。
如使用 using
調用之后,發現程序仍是找不到腳本,建議檢查 using
接口里面的腳本路徑是否有誤,另外還可以嘗試在腳本開頭把待引入的腳本路徑添加到 sys.path
中:
#將test1.air的路徑添加到sys.path里面
sys.path.append(r"D:\test\user\project\test1.air")
25.poco定位腳本怎么寫?
poco支持用基本選擇器、相對選擇器和空間選擇器來編寫定位腳本,另外還支持用正則表達式來匹配控件。詳細教程和實例可以查看官方公眾號的教程推文:
26.局部截圖和局部找圖
局部截圖:
screen = G.DEVICE.snapshot()
# 局部截圖
local = aircv.crop_image(screen,(0,160,1067,551))
局部找圖:
screen = G.DEVICE.snapshot()
# 局部截圖
local_screen = aircv.crop_image(screen,(0,949,1067,1500))
# 將我們的目標截圖設置為一個Template對象
tempalte = Template(r"png_code/設置.png")
# 在局部截圖里面查找指定的圖片對象
pos = tempalte.match_in(local_screen)
詳細教程和實例可以查看官方公眾號的教程推文:使用Airtest最常遇到的幾個需求,都幫你們實現好了。
Airtest 官網:http://airtest.netease.com/
Airtest 教程官網:https://airtest.doc.io.netease.com/
搭建企業私有雲服務:https://airlab.163.com/b2b
官方答疑 Q 群:654700783
呀,這么認真都看到這里啦,幫忙點個推薦支持一下唄,灰常感謝~