【更新公告】Airtest更新至1.2.7版本

1. 前言

本次更新爲Airtest庫更新,主要是新增了設備釋放接口、大量斷言的語句,新增了對Android 12L的支持,對安裝接口的增強,和若干bug的修復。

2. Airtest版本提升至1.2.7

1)新增了device.disconnect()接口

原先的Airtest,在腳本長時間運行、或是使用了AirtestIDE反覆連接多個不同手機時,可能會 建立大量adb連接未釋放 ,一直佔用資源。

這也會導致在部分手機上,反覆切換橫屏和豎屏應用時,會有概率 出現屏幕有一半內容變成黑屏 的問題。

因此,1.2.7版本的Airtest新增了device.disconnect()接口,用於:

  • 在腳本中允許手動調用,讓設備創建出的所有adb連接都強制釋放掉,dev.disconnect(),如果還要繼續使用這個設備對象,最好重新再創建一次 dev = connect_device("android:///")
  • 同時對連接的創建進行了更進一步的清理操作,避免黑屏問題的發生
2)新增了大量的斷言語句

在腳本編寫中,斷言語句是非常重要的組成部分,但airtest舊版只支持 assert_existsassert_equal 兩種類型的斷言語句。

現在Airtest1.2.7版本,將所有斷言語句單獨放在 airtest/core/assertions.py 中,增加了更多類型,方便腳本編寫工作。

目前Airtest1.2.7支持的斷言列表:

  • assert_exists
  • assert_not_exists
  • assert_equal
  • assert_not_equal
  • assert_true
  • assert_false
  • assert_is
  • assert_is_not
  • assert_is_none
  • assert_is_not_none
  • assert_in
  • assert_not_in
  • assert_is_instance
  • assert_not_is_instance
  • assert_greater
  • assert_greater_equal
  • assert_less
  • assert_less_equal

我們也可以在Airtest的API文檔中,找到所有斷言接口及其說明:https://airtest.readthedocs.io/en/latest/all_module/airtest.core.assertions.html

3)支持設置斷言時附帶當前截圖

Airtest1.2.7除了讓斷言語句更加豐富以外,還支持設置斷言時,是否附帶截取當前畫面的圖片,然後顯示在Airtest報告中,這樣報告的斷言內容會更加清晰,也更具有airtest的截圖特色:

# 默認情況下,斷言截圖會開啓
assert_exists()

# 如不需要斷言時截取當前畫面,則可以設置關閉斷言的截圖
assert_exists(截圖,snapshot=False)
4)新增對Android12L的支持

Airtest1.2.7已增加 minicap 對android 12L的支持,Poco的支持可以將pocoui更新至1.0.88版本。

5)安裝接口pm_install的增強

Airtest1.2.7對 pm_install 接口進行了較大的增強:

  • 支持了安裝參數的傳入(與 adb.install 保持一致),
  • 支持了中文路徑、一些包含特殊符號路徑
  • 對路徑的改動同時影響到了 adb.pull()adb.push() 接口,支持了中文路徑、包含斜槓的路徑(比如 \g 這樣的字符也會有問題)、包含特殊符號(空格、括號等)的路徑
  • pm_install 安裝完畢後,會進行 adb shell rm apk 的操作,但在部分低配機型上可能會在這一步卡住超時(實際已經刪除完畢,但代碼一直不結束,導致整個腳本卡死),因此增加timeout 30秒自動結束
6)logwrap增加截圖參數

如果希望把自定義的函數也顯示到airtest的報告中,可以使用 @logwrap,例如:

@logwrap
def func1():
    pass

如果希望在報告顯示 func1內容的同時,還附帶一張當前設備的截圖的話,可以增加 snapshot=True 參數在 func1() 的定義中:

@logwrap
def func1(snapshot=True):
    pass
7)若干bug的修復
  • 嘗試修復偶現的一個報告讀取不到圖片導致生成報告失敗的問題
  • 兼容了adb 獲取屏幕信息超時的情況
  • 修復了一個 adb.text() 在輸入字母+數字時可能會導致亂序的問題,同時支持空格
8)新增了3個PR的支持
  • 在Windows環境下,初始化 airtest.core.win.Windows 對象時,允許開發者選擇性跳過 connect() 方法中的 set_foreground() 功能
  • Android.get_render_resolution 中增加應用包名參數,
    使得 get_render_resolution 能夠獲取到除top activity以外的應用的渲染區域
  • 修復win和linux的 start_app 缺少的傳參

【tips】關於本版本更新內容的更多示例,可以持續關注我們後續的推文,後續都會展開給同學們介紹對應的接口實例。

3. 如何更新

因本次更新僅更新了Airtest庫,所以同學們目前只能在自己本地python環境中,將Airtest更新到最新版本:

pip install -U airtest

對於使用AirtestIDE的同學,可以等我們發佈1.2.15版本的IDE,或者在舊版本AirtestIDE中設置使用本地python環境,然後將本地python環境的Airtest庫升級到最新版本即可。

4. 其它問題

如同學們在使用新版的Airtest時遇到了一些問題無法解決,可以通過此網站向我們的開發者快速提單:https://airtest.netease.com/issue_create

可以在標題中加入“Airtest1.2.7”之類的字眼,方便我們快速篩選和排查。


Airtest官網https://airtest.netease.com/
Airtest教程官網https://airtest.doc.io.netease.com/
搭建企業私有云服務https://airlab.163.com/b2b

官方答疑 Q 羣:117973773

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

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章