您好,登錄后才能下訂單哦!
隨著產(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ì)量。
整體采用分層設(shè)計(jì),API設(shè)計(jì)方式參考 WebDriver
整體框架是一個(gè)同步阻塞的模型:在一個(gè)線(xiàn)程中循環(huán)的執(zhí)行 receive 方法,等待收到 response,發(fā)送消息后,阻塞,只有當(dāng) receive 方法獲得消息時(shí),才會(huì)解除阻塞,發(fā)送下一條消息,具備超時(shí)異常處理機(jī)制
框架內(nèi)打包了 Python 版本的 UIAutomator,方便在安卓 Native 頁(yè)面進(jìn)行操作
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ù)指定的操作。
H5頁(yè)面/小程序 UI 自動(dòng)化執(zhí)行流程
自動(dòng)化腳本調(diào)用流程
軟件 | 軟件要求 |
---|---|
Python 版本 | 2.7.x 版本 |
Java JDK 版本 | Java 語(yǔ)言框架(最低1.7) |
Android SDK 版本 | 4.4 及以上版本 |
adb 版本 | 最新版本即可 |
Python IDE 開(kāi)發(fā)環(huán)境 | 如 PyCharm CE等 |
下載 & 安裝 Python ,安裝后在終端輸入命令 python -v 和 pip list,能夠執(zhí)行,說(shuō)明 Python 環(huán)境配置成功。
下載 & 安裝 Java JDK 安裝后在終端輸入命令java -version,java, javac命令能夠執(zhí)行,則 Java 環(huán)境配置成功。
下載 & 安裝 Android Studio ,然后在里面安裝 Android SDK
安裝 Android Studio 后,配置 SDK 環(huán)境(若自動(dòng)安裝不成功,可到 手動(dòng)下載安裝 ,安裝后在終端輸入命令 adb version 執(zhí)行有結(jié)果,則說(shuō)明配置成功
下載 & 安裝 Pycharm CE
庫(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)核
如何寫(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()
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()
微信小程序:
# 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()
免責(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)容。