這款開源測試神器,圓了我玩遊戲不用動手的夢想
作者: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 公眾號 第一時間收到更新。
還有更多開源項目的介紹和寶藏項目等待你的發現。