作者:HelloGitHub-Anthony
一天我在公司用手機看遊戲直播,同事問我在玩什麼遊戲?我和他說在看直播,他恍然大悟:原來如此,我還納悶你玩遊戲,咋不用動手呢。。。。一語驚醒夢中人:玩遊戲不用動手,怎樣才能做到玩遊戲不用手呢?我要去 GitHub 上找找~
本期介紹的是 GitHub 上標星 5.4k 由網易開源和維護的開源專案:Airtest 一款基於 Python 的跨平臺 UI 自動化測試框架,釋放雙手“玩”遊戲、“耍”應用!
所謂 UI 自動化就是讓遊戲和應用,按照預先設定的步驟自己動。可用來實現自動測試應用,也可以用來實現應用自動化。。。就像升級版按鍵精靈?
一、應用場景
首先這個專案適合所有讀者,只要跟著本教程僅需會一點 Python 語法,就可以學會用 Airtest 解決一些重複性的工作,釋放你的雙手!比如:檢測殭屍好友、批量點贊、刷遊戲副本、自動化測試等等。
如果測試同學上手了 Airtest 就會讚不絕口,畢竟測試介面的每個按鈕是否有效是一個機械性的任務,不應該讓機械的操作浪費寶貴的時間,有了它可以輕鬆搞定“點點點”的測試需求。
另外 Airtest 對於普通使用者能做到最有意思的事情就是做 遊戲自動化。例如,在遊戲中經常會有許多固定模式的日常任務,通過 Airtest 可以讓這些枯燥的日常任務,自動執行從而節省時間。對於陰陽師等遊戲配合遊戲自帶的自動戰鬥經過除錯我們甚至可以做到全自動遊玩,讓玩家徹底解放雙手!
看到這裡是不是躍躍欲試了呢?下面就跟著小編一起上手 Airtest 吧~
二、上手
安裝:
$ pip install -U airtest
對於新手來講,我個人推薦使用官方推出視覺化編輯器 AirtestIDE,使用起來非常方便,一鍵快速連線安卓、iOS 等裝置,同時支援影像識別與 UI 元素識別。
後面的教程也是採用 AirtestIDE 講解,手機為 Android 系統。
1. 開啟手機開發者模式
開啟手機的設定介面,找到 關於手機 介面:
連續點選 版本號 欄目直到提示開發者模式已經開啟:
然後根據機型不同,找到開發人員選項中,開啟開發人員選項 -> USB 除錯 -> “僅充電”模式下允許ADB除錯,關閉 監控 ADB 安裝應用
之後將我們的手機使用資料線與電腦連線起來。
注意:為了防止發生安全問題,不連線 AirtestIDE 時請關閉 USB 除錯功能!
2. 連線安卓手機
啟動 AirtestIDE 後會提示需要登入,這裡可以直接點選 Skip 跳過。然後我們就能看到主介面啦:
當手機連線到電腦後,點選裝置連線視窗的重新整理 ADB按鈕後等待一會兒就能看見我們的手機:
點選 操作 欄的 connect 後即可連線手機。
第一次連線時在手機上會彈出認證提示,無特殊情況點選同意即可
之後就能看到我們手機畫面:
同時滑鼠可代替手指進行點選操作。
3. 實現自動訪問 HG 官網
實現手機自動訪問網站僅需要簡單的 3 步:
1、在 Airtest 輔助窗 找到 touch 與 text:
2、點選 touch 後在手機畫面選擇瀏覽器圖示截圖,生成如下程式碼:
3、選擇 text 輸入:www.hellogithub.com
最後點選 執行 按鈕即可。
注意,此部分由於需要安裝 yosemite 除錯工具可能需要先執行幾次才可成功,而且影像識別有一定概率會失敗
同樣,IDE 也支援錄製動作,點選 Airtest 輔助窗 裡的錄影按鈕即可:
之後使用滑鼠操作手機,IDE 就會自動為我們生成指令碼了。
4. 生成報告(測試人員最愛)
Airtest 可以非常方便的生成測試報告,只需要點選 IDE 上方的生成報告按鈕:
即可自動生成全面的測試報告:
三、自動識別
在實際應用中,有些時候是圖片識別無法完成或者存在困難的,這時我們可以利用 Poco 工具直接識別 UI 框架定位元素。
一個很簡單的例子,自動開啟 HG 的微信小程式並分享機器學習的內容:
from airtest.core.api import *
from poco.drivers.android.uiautomation import AndroidUiautomationPoco
poco = AndroidUiautomationPoco()
auto_setup(__file__)
poco(text="HelloGitHub").click()
poco(text="#機器學習").click()
poco(text="tutorials").click()
poco("android.widget.Button").click()
利用 IDE 的 Poco 錄製功能可以很方便的自動生成上述程式碼,實際效果如下:
在應用當中巧妙地利用 Poco 可以節省很多圖片識別時間以及應用背景不同時程式的穩定性。
四、結語
到這裡 Airtest 的演示就結束啦!本文僅僅演示了 Airtest 最基本的功能。遊戲自動化只是其中很小的一個功能,它主要還是用來做自動化測試。支援不同裝置同時進行測試,但對於使用者而言有一定的上手門檻,感興趣去的小夥伴可以去深入研究研究,但要注意方向呀~
最後,感謝您的閱讀!這裡是 HelloGitHub 分享 GitHub 上有趣、入門級的開源專案。您的每個點贊、留言、分享都是對我們最大的鼓勵!
關注 HelloGitHub 公眾號 第一時間收到更新。
還有更多開源專案的介紹和寶藏專案等待你的發現。