Airtest快問快答,你們想問的這里都有!(第1期)


前言

本期我們給同學們整理了答疑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”的教程推文:

7.設備連接不上

請參考官方文檔的相關內容:AirtestIDE使用文檔--設備連接--Android連接常見問題,然后根據自己的手機型號,查看1、2節內容。

不同品牌手機的相關設置名稱僅供參考,不是所有的品牌型號相關的設置名稱和位置都一樣,所以教程中提到的設置僅供同學們參考,如找不到完全相同的設置,請同學們仔細查找類似的設置。

8.模擬器連接不上

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.apkpocoservice-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使用文檔--運行腳本的章節下面,另外利用多線程方法來進行批量運行可以參考網上的教程:

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

呀,這么認真都看到這里啦,幫忙點個推薦支持一下唄,灰常感謝~


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM