FAutoTest一個 H5、小程式自動化測試框架
簡介
隨著產品業務形態逐漸從 App 延升到微信小程式、微信公眾號以及 QQ公眾號等,而之前的自動化建設主要是 Native App 為主,全手工測試已無法滿足快速增長的業務需求。為提升測試效率和質量,FAutoTest 框架致力於解決 QQ、微信內 UI 的自動化問題(包括微信內 H5頁面和小程式、QQ 內 H5頁面),提升自動化測試的效率和穩定性。
FAutoTest 是一款成長中的框架,吸收借鑑了一些 UI 自動化工具的優秀設計理念和思想。如果框架有不足地方,或者你有更好的建議,歡迎提交 Issues 參與貢獻。
特性
FAutoTest 專業服務於微信 H5/小程式的UI自動化測試,提升測試效率與質量。
- 支援微信 H5頁面,能識別常見 H5控制元件,能獲取頁面任意內容(常見的如文字、圖片、連結等)
- 支援小程式內控制元件識別,操作,頁面內容獲取等
- 支援安卓 Native 頁面組合操作使用
- 簡單的 API 設計,較低的使用門檻
- 支援基礎的效能測試監控
- 功能擴充套件性強,擴充套件門檻低
架構
-
整體採用分層設計,API設計方式參考 WebDriver
-
整體框架是一個同步阻塞的模型:在一個執行緒中迴圈的執行 receive 方法,等待收到 response,傳送訊息後,阻塞,只有當 receive 方法獲得訊息時,才會解除阻塞,傳送下一條訊息,具備超時異常處理機制
-
框架內打包了 Python 版本的 UIAutomator,方便在安卓 Native 頁面進行操作
User Interface(使用者互動層): 提供給使用者所有的介面操作 API(H5介面及小程式介面),使用者不需要關注框架內部實現,只需要關注自身業務邏輯流程(手工用例流程轉換成自動化流程)
PageOperator(操作解析層): 主要用於接收和解析使用者命令後傳遞給下層 Engine 層
Engine( H5&小程式引擎層): 將使用者命令傳輸到手機,並返回結果資訊。封裝 WebSocket 和單執行緒池,透過WebSocket Debug URL 和瀏覽器核心建立連結,傳送 Json 格式的協議到手機端進行使用者指定的操作。
業務流程
依賴軟體環境
軟體 | 軟體要求 |
---|---|
Python 版本 | 2.7.x 版本 |
Java JDK 版本 | Java 語言框架(最低1.7) |
Android SDK 版本 | 4.4 及以上版本 |
adb 版本 | 最新版本即可 |
Python IDE 開發環境 | 如 PyCharm CE等 |
1. Python 版本安裝
下載 & 安裝 Python ,安裝後在終端輸入命令 python -v 和 pip list,能夠執行,說明 Python 環境配置成功。
2. Java JDK 版本安裝
下載 & 安裝 Java JDK 安裝後在終端輸入命令java -version,java, javac命令能夠執行,則 Java 環境配置成功。
3. Android SDK 版本安裝
下載 & 安裝 Android Studio ,然後在裡面安裝 Android SDK
4. 配置 adb 環境
安裝 Android Studio 後,配置 SDK 環境(若自動安裝不成功,可到 手動下載安裝 ,安裝後在終端輸入命令 adb version 執行有結果,則說明配置成功
5. IDE 安裝
下載 & 安裝 Pycharm CE
FAutoTest 開發環境安裝
庫名稱 | 版本 | 下載地址 |
---|---|---|
uiautomator | 0.3.2 | |
lxml | 4.2.3 | |
bidict | 0.17.0 | |
websocket-client | 0.44.0 |
-
使用pip安裝框架所需的第三方庫 uiautomator、websocket-client、lxml、bidict、ADBkeyBoard,如安裝lxml、bidict、websocket-client可用pip形式安裝,如安裝lxml,
pip install lxml
-
安裝自身框架
pip intsall dist/fastAutoTest-xxx.whl
-
開啟微信Debug模式,安裝 TBS 核心
- 可在微信中開啟 X5 除錯地址: http://debugx5.qq.com
- TBS 核心安裝地址: http://debugtbs.qq.com
- 詳情方式見:
使用方式
如何寫測試案例,如微信 H5頁面,如下所示:
# coding=utf-8 from fastAutoTest.core.h5.h5Engine import H5Driver # http://h5.baike.qq.com/mobile/enter.html 從微信進入此連結,首屏載入完後執行指令碼 if __name__ == '__main__':
h5Driver = H5Driver()
h5Driver.initDriver()
h5Driver.clickElementByXpath('/html/body/div[1]/div/div[3]/p')
h5Driver.clickFirstElementByText('白內障')
h5Driver.returnLastPage()
h5Driver.returnLastPage() print(h5Driver.getElementTextByXpath('/html/body/div[1]/div/div[3]/p'))
h5Driver.close()
- 從微信初始化 H5頁面,如進入 http://h5.baike.qq.com/mobile/enter.html
- 進入頁面後找到需要操作的控制元件的xpath,可透過 chrome:inspect 找到當前頁面,找到控制元件的xpath
- 初始化框架並進行 API 呼叫,如執行點選控制元件等
- 關閉框架,執行用例
QQ 的 H5頁面:
# coding=utf-8 from fastAutoTest.core.qq.qqEngine import QQDriver # 從動態 -> 動漫進入 if __name__ == '__main__':
qqDriver = QQDriver()
qqDriver.initDriver()
qqDriver.clickFirstElementByText('英雄救美,這也太浪漫了')
qqDriver.returnLastPage()
qqDriver.clickElementByXpath('//*[@id="app"]/div/ul/li[2]')
qqDriver.returnLastPage()
qqDriver.close()
- 從 QQ 動態,進入動漫 H5頁面
- 找到需操作的控制元件的xpath,可透過 chrome:inspect 找到當前頁面,找到控制元件的xpath
- 初始化框架並進行相關 API 呼叫
- 關閉框架,執行用例
微信小程式:
# coding=utf-8 from fastAutoTest.core.wx.wxEngine import WxDriver import os # 進入企鵝醫典小程式 if __name__ == '__main__':
wxDriver = WxDriver()
wxDriver.initDriver() # 點選全部疾病 wxDriver.clickElementByXpath('/html/body/div[1]/div/div[3]/p')
wxDriver.clickFirstElementByText('白內障')
wxDriver.returnLastPage()
wxDriver.returnLastPage() # 截圖 dirPath = os.path.split(os.path.realpath(__file__))[0] PIC_SRC = os.path.join(dirPath, 'pic.png')
wxDriver.d.screenshot(PIC_SRC)
wxDriver.close()
- 搜尋小程式,如企鵝醫典小程式,進入小程式頁面
- 同樣找控制元件的xpath,同上操作
- 初始化框架,進行相關 API 呼叫
- 關閉框架,執行用例
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/69942496/viewspace-2653726/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- 【開源公告】H5、小程式自動化測試框架FAutoTest正式開源H5框架
- H5 自動化測試框架推薦H5框架
- 騰訊出品小程式自動化測試框架【Minium】系列(一)環境搭建之第一個測試程式框架
- 小程式自動化測試--測試3
- 微信小程式及公眾號H5自動化測試攻略微信小程式H5
- 自動化測試框架框架
- 軟體測試框架——自動化測試框架框架
- 自動化測試框架思路框架
- 自動化測試框架指南框架
- android 5個自動化測試Ui框架AndroidUI框架
- 自己動手寫Web自動化測試框架(6):自動化測試框架的規劃Web框架
- 騰訊出品小程式自動化測試框架【Minium】系列(七)測試框架的設計和開發框架
- 測試開發之自動化篇-自動化測試框架設計框架
- 自動化測試框架比較框架
- 自動化測試框架介紹框架
- Selenium自動化測試框架框架
- 軟體測試自動化框架框架
- 介面自動化測試框架 HttpFPT框架HTTP
- 微信小程式設計師自動化測試微信小程式程式設計師
- 利用tox打造自動自動化測試框架框架
- T框架介紹(自動化測試框架)框架
- 四個類搞定分層自動化測試框架框架
- 一文搞懂自動化測試框架設計框架
- 京喜前端自動化測試之路(小程式篇)前端
- UI自動化測試框架Cypress初探UI框架
- Python 自動化測試框架unittestPython框架
- 自動化測試QTP知識框架QT框架
- 自動化測試框架:擁抱Ruby框架
- 自動化測試框架的AW模式框架模式
- 騰訊出品小程式自動化測試框架【Minium】系列(五)API詳解(中)框架API
- 騰訊出品小程式自動化測試框架【Minium】系列(三)元素定位詳解框架
- 騰訊出品小程式自動化測試框架【Minium】系列(四)API詳解(上)框架API
- 自動化測試如此容易!多語言自動化測試框架 Selenium 程式設計(C#篇)框架程式設計C#
- 自動化測試系列 —— UI自動化測試UI
- 軟體自動化測試有什麼優勢?自動化測試框架有哪些?框架
- 自己動手寫Web自動化測試框架Web框架
- Robot Framework自動化測試框架核心指南-如何做好自動化測試平臺框架的設計Framework框架
- 一種基於 cypress 的 UI 自動化測試框架UI框架