溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊(cè)×
其他方式登錄
點(diǎn)擊 登錄注冊(cè) 即表示同意《億速云用戶(hù)服務(wù)條款》

FAutoTest一個(gè) H5、小程序自動(dòng)化測(cè)試框架

發(fā)布時(shí)間:2020-08-05 10:49:11 來(lái)源:ITPUB博客 閱讀:195 作者:testingbang 欄目:移動(dòng)開(kāi)發(fā)

簡(jiǎn)介

隨著產(chǎn)品業(yè)務(wù)形態(tài)逐漸從 App 延升到微信小程序、微信公眾號(hào)以及 QQ公眾號(hào)等,而之前的自動(dòng)化建設(shè)主要是 Native App 為主,全手工測(cè)試已無(wú)法滿(mǎn)足快速增長(zhǎng)的業(yè)務(wù)需求。為提升測(cè)試效率和質(zhì)量,F(xiàn)AutoTest 框架致力于解決 QQ、微信內(nèi) UI 的自動(dòng)化問(wèn)題(包括微信內(nèi) H5頁(yè)面和小程序、QQ 內(nèi) H5頁(yè)面),提升自動(dòng)化測(cè)試的效率和穩(wěn)定性。

FAutoTest 是一款成長(zhǎng)中的框架,吸收借鑒了一些 UI 自動(dòng)化工具的優(yōu)秀設(shè)計(jì)理念和思想。如果框架有不足地方,或者你有更好的建議,歡迎提交 Issues 參與貢獻(xiàn)。

特性

FAutoTest 專(zhuān)業(yè)服務(wù)于微信 H5/小程序的UI自動(dòng)化測(cè)試,提升測(cè)試效率與質(zhì)量。

  • 支持微信 H5頁(yè)面,能識(shí)別常見(jiàn) H5控件,能獲取頁(yè)面任意內(nèi)容(常見(jiàn)的如文字、圖片、鏈接等)
  • 支持小程序內(nèi)控件識(shí)別,操作,頁(yè)面內(nèi)容獲取等
  • 支持安卓 Native 頁(yè)面組合操作使用
  • 簡(jiǎn)單的 API 設(shè)計(jì),較低的使用門(mén)檻
  • 支持基礎(chǔ)的性能測(cè)試監(jiān)控
  • 功能擴(kuò)展性強(qiáng),擴(kuò)展門(mén)檻低

架構(gòu)

  1. 整體采用分層設(shè)計(jì),API設(shè)計(jì)方式參考 WebDriver

  2. 整體框架是一個(gè)同步阻塞的模型:在一個(gè)線(xiàn)程中循環(huán)的執(zhí)行 receive 方法,等待收到 response,發(fā)送消息后,阻塞,只有當(dāng) receive 方法獲得消息時(shí),才會(huì)解除阻塞,發(fā)送下一條消息,具備超時(shí)異常處理機(jī)制

  3. 框架內(nèi)打包了 Python 版本的 UIAutomator,方便在安卓 Native 頁(yè)面進(jìn)行操作

FAutoTest一個(gè) H5、小程序自動(dòng)化測(cè)試框架

User Interface(用戶(hù)交互層):  提供給用戶(hù)所有的界面操作 API(H5界面及小程序界面),使用者不需要關(guān)注框架內(nèi)部實(shí)現(xiàn),只需要關(guān)注自身業(yè)務(wù)邏輯流程(手工用例流程轉(zhuǎn)換成自動(dòng)化流程)

PageOperator(操作解析層):  主要用于接收和解析用戶(hù)命令后傳遞給下層 Engine 層

Engine( H5&小程序引擎層):  將用戶(hù)命令傳輸?shù)绞謾C(jī),并返回結(jié)果信息。封裝 WebSocket 和單線(xiàn)程池,通過(guò)WebSocket Debug URL 和瀏覽器內(nèi)核建立鏈接,發(fā)送 Json 格式的協(xié)議到手機(jī)端進(jìn)行用戶(hù)指定的操作。

業(yè)務(wù)流程

  • H5頁(yè)面/小程序 UI 自動(dòng)化執(zhí)行流程

    FAutoTest一個(gè) H5、小程序自動(dòng)化測(cè)試框架
  • 自動(dòng)化腳本調(diào)用流程

    FAutoTest一個(gè) H5、小程序自動(dòng)化測(cè)試框架

依賴(lài)軟件環(huán)境

軟件 軟件要求
Python 版本 2.7.x 版本
Java JDK 版本 Java 語(yǔ)言框架(最低1.7)
Android SDK 版本 4.4 及以上版本
adb 版本 最新版本即可
Python IDE 開(kāi)發(fā)環(huán)境 如 PyCharm CE等
1. Python 版本安裝

下載 & 安裝  Python ,安裝后在終端輸入命令 python -v 和 pip list,能夠執(zhí)行,說(shuō)明 Python 環(huán)境配置成功。

2. Java JDK 版本安裝

下載 & 安裝  Java JDK  安裝后在終端輸入命令java -version,java, javac命令能夠執(zhí)行,則 Java 環(huán)境配置成功。

3. Android SDK 版本安裝

下載 & 安裝  Android Studio ,然后在里面安裝 Android SDK

4. 配置 adb 環(huán)境

安裝 Android Studio 后,配置 SDK 環(huán)境(若自動(dòng)安裝不成功,可到 手動(dòng)下載安裝  ,安裝后在終端輸入命令 adb version 執(zhí)行有結(jié)果,則說(shuō)明配置成功

5. IDE 安裝

下載 & 安裝  Pycharm CE

FAutoTest 開(kāi)發(fā)環(huán)境安裝

庫(kù)名稱(chēng) 版本 下載地址
uiautomator 0.3.2 https://pypi.org/project/uiautomator/#files
lxml 4.2.3 https://pypi.org/project/lxml/4.2.3/#files
bidict 0.17.0 https://pypi.org/project/bidict/#files
websocket-client 0.44.0 https://pypi.org/project/websocket-client/#files
  • 使用pip安裝框架所需的第三方庫(kù) uiautomator、websocket-client、lxml、bidict、ADBkeyBoard,如安裝lxml、bidict、websocket-client可用pip形式安裝,如安裝lxml,

    pip install lxml
    
  • 安裝自身框架

    pip intsall dist/fastAutoTest-xxx.whl
    
  • 打開(kāi)微信Debug模式,安裝 TBS 內(nèi)核

    • 可在微信中打開(kāi) X5 調(diào)試地址: http://debugx5.qq.com
    • TBS 內(nèi)核安裝地址: http://debugtbs.qq.com
    • 詳情方式見(jiàn): http://x5.tencent.com/tbs/guide/debug/faq.html

使用方式

如何寫(xiě)測(cè)試案例,如微信 H5頁(yè)面,如下所示:

# coding=utf-8 from fastAutoTest.core.h6.h6Engine import H5Driver # http://h6.baike.qq.com/mobile/enter.html 從微信進(jìn)入此鏈接,首屏加載完后執(zhí)行腳本 if __name__ == '__main__':
    h6Driver = H5Driver()
    h6Driver.initDriver()
    h6Driver.clickElementByXpath('/html/body/div[1]/div/div[3]/p')
    h6Driver.clickFirstElementByText('白內(nèi)障')
    h6Driver.returnLastPage()
    h6Driver.returnLastPage() print(h6Driver.getElementTextByXpath('/html/body/div[1]/div/div[3]/p'))
    h6Driver.close()
  1. 從微信初始化 H5頁(yè)面,如進(jìn)入  http://h6.baike.qq.com/mobile/enter.html
  2. 進(jìn)入頁(yè)面后找到需要操作的控件的xpath,可通過(guò) chrome:inspect 找到當(dāng)前頁(yè)面,找到控件的xpath
  3. 初始化框架并進(jìn)行 API 調(diào)用,如執(zhí)行點(diǎn)擊控件等
  4. 關(guān)閉框架,執(zhí)行用例

QQ 的 H5頁(yè)面:

# coding=utf-8 from fastAutoTest.core.qq.qqEngine import QQDriver # 從動(dòng)態(tài) -> 動(dòng)漫進(jìn)入 if __name__ == '__main__':
    qqDriver = QQDriver()
    qqDriver.initDriver()
    qqDriver.clickFirstElementByText('英雄救美,這也太浪漫了')
    qqDriver.returnLastPage()
    qqDriver.clickElementByXpath('//*[@id="app"]/div/ul/li[2]')
    qqDriver.returnLastPage()
    qqDriver.close()
  1. 從 QQ 動(dòng)態(tài),進(jìn)入動(dòng)漫 H5頁(yè)面
  2. 找到需操作的控件的xpath,可通過(guò) chrome:inspect 找到當(dāng)前頁(yè)面,找到控件的xpath
  3. 初始化框架并進(jìn)行相關(guān) API 調(diào)用
  4. 關(guān)閉框架,執(zhí)行用例

微信小程序:

# coding=utf-8 from fastAutoTest.core.wx.wxEngine import WxDriver import os # 進(jìn)入企鵝醫(yī)典小程序 if __name__ == '__main__':
    wxDriver = WxDriver()
    wxDriver.initDriver() # 點(diǎn)擊全部疾病 wxDriver.clickElementByXpath('/html/body/div[1]/div/div[3]/p')
    wxDriver.clickFirstElementByText('白內(nèi)障')
    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()
  1. 搜索小程序,如企鵝醫(yī)典小程序,進(jìn)入小程序頁(yè)面
  2. 同樣找控件的xpath,同上操作
  3. 初始化框架,進(jìn)行相關(guān) API 調(diào)用
  4. 關(guān)閉框架,執(zhí)行用例


向AI問(wèn)一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀(guān)點(diǎn)不代表本網(wǎng)站立場(chǎng),如果涉及侵權(quán)請(qǐng)聯(lián)系站長(zhǎng)郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI