前言:UI自動(dòng)化對(duì)于測(cè)試工程師是一項(xiàng)必不可少的技能敦锌。
目前市場(chǎng)上面流行的有python/Java+Appium框架姑宽,robotframe框架等啄刹,這些都有一個(gè)共同的特點(diǎn)繁成,定位元素需要依賴工具忆嗜,或需要自己去寫己儒,效率較慢。
airtest最大的優(yōu)勢(shì)是定位元素非忱粒快闪湾,且最優(yōu)定位,也支持圖像定位元素绩卤,讓UI自動(dòng)化實(shí)現(xiàn)起來非常方便途样。
本人使用UI自動(dòng)化也時(shí)間不短,結(jié)合使用體驗(yàn)濒憋,airtest是一個(gè)較為可行的實(shí)現(xiàn)方案娘纷,值得去使用。
本文介紹airtest 實(shí)現(xiàn)Android APP自動(dòng)化跋炕,其他的端大同小異不做過多介紹赖晶。目的介紹實(shí)現(xiàn)方式和實(shí)現(xiàn)的流程過程。
一. airtest介紹
????????Airtest是網(wǎng)易出品的一款基于圖像識(shí)別和poco控件識(shí)別的一款UI自動(dòng)化測(cè)試工具辐烂。Airtest的框架是網(wǎng)易團(tuán)隊(duì)自己開發(fā)的一個(gè)圖像識(shí)別框架遏插,這個(gè)框架的祖宗就是一種新穎的圖形腳本語(yǔ)言Sikuli。Sikuli這個(gè)框架的原理是這樣的纠修,計(jì)算機(jī)用戶不需要一行行的去寫代碼胳嘲,而是用屏幕截屏的方式,用截出來的圖形擺列組合成神器的程序扣草,這是Airtest的一部分了牛。
??另外颜屠,Airtest也基于poco這個(gè)U控件搜索框架,這個(gè)框架也是網(wǎng)易自家的跨平臺(tái)U測(cè)試框架鹰祸,原理類似于appium甫窟,通過控件的名稱,id之類的來定位目標(biāo)控件蛙婴,然后調(diào)用函數(shù)方法粗井,例如click(),swip()之類的方法來對(duì)目標(biāo)控件進(jìn)行點(diǎn)擊或者是操作。
二. 安裝依賴JDK和ADB(SDK套件)
1.JDK安裝:
JDK下載地址:
http://www.oracle.com/technetwork/java/javase/downloads/index.html
點(diǎn)開鏈接你應(yīng)該看到如下圖所示的界面:
2.點(diǎn)擊上圖中箭頭所指的地方街图,會(huì)出現(xiàn)下面的這個(gè)界面浇衬,此時(shí)你需要根據(jù)你的電腦系統(tǒng)來進(jìn)行對(duì)應(yīng)的版本進(jìn)行選擇,在選擇版本和下載之前你需要首先接收協(xié)議餐济,具體界面如下圖所示:
安裝
雙擊以后進(jìn)行JDK的安裝(記得按照第二幅圖修改一下安裝路徑耘擂,不要什么東西都安裝到系統(tǒng)盤。絮姆。梳星。):
(1)雙擊進(jìn)行安裝界面如下所示:
配置環(huán)境變量:
??????? 1. 打開環(huán)境變量配置。計(jì)算機(jī)→屬性→高級(jí)系統(tǒng)設(shè)置→高級(jí)→環(huán)境變量滚朵,在系統(tǒng)變量中配置冤灾。
??????? 2. 配置JAVA_HOME。新建辕近,變量名JAVA_HOME韵吨,變量值,jdk路徑移宅,我的路徑是C:\Program Files\Java\jdk1.8.0_121归粉,保存。
??????? 3. 配置CLASSPATH漏峰。新建糠悼,變量名CLASSPATH,變量值浅乔,.;%JAVA_HOME%\lib;%JAVA_HOME%\lib\tools.jar(第一個(gè)分號(hào)前前面有一個(gè)點(diǎn))倔喂。
??????? 4. 配置Path。打開Path變量靖苇,在變量值最前加入%JAVA_HOME%\bin;%JAVA_HOME%\jre\bin;
驗(yàn)證:
????? 運(yùn)行cmd席噩,輸入java -version,顯示java版本則成功贤壁。
2.adb下載及安裝:
下載adb壓縮包去解壓即可:鏈接:https://pan.baidu.com/s/1SKu24yyShwg16lyIupO5VA 提取碼:ih0i
然后輸入adb version 查看版本 可以看出是否安裝成功悼枢,如下就已經(jīng)成功了。
三.? airtest安裝與使用
1. airtest安裝脾拆。
airtest安裝是比較方便馒索,AirtestIDE下載地址莹妒,進(jìn)入下載對(duì)應(yīng)自己的機(jī)器平臺(tái),下載好直接安裝即可绰上,安裝起來是很方便旨怠。
2. airtest使用前準(zhǔn)備
這個(gè)工具優(yōu)勢(shì)是做APP UI自動(dòng)化,就以APP為介紹渔期。
首先手機(jī)連接到電腦(Android运吓,Windows)渴邦,使用數(shù)據(jù)線連接后疯趟,會(huì)自動(dòng)下載手機(jī)驅(qū)動(dòng)直至連接。
手機(jī)設(shè)置打開USB調(diào)試谋梭。
adb devices查看是否已連接或者直接在airtest連接查看信峻。
如果出現(xiàn)上面信息,說明環(huán)境已經(jīng)配置好瓮床,可以開始寫自動(dòng)化代碼盹舞。
注意:電腦里面只能有一個(gè)adb版本,如果之前安裝過安裝其他環(huán)境(模擬器等)隘庄,有可能出現(xiàn)多個(gè)adb造成airtest連接不上手機(jī)踢步,全部的adb復(fù)制粘貼使用一個(gè)版本的adb即可。
3. airtest腳本編寫
airtest有官方使用文檔:https://airtest.doc.io.netease.com/tutorial/1_quick_start_guide/
上面寫的非常詳細(xì)丑掺,怎么定位怎么操作获印。使用前可以多看看
點(diǎn)擊連接手機(jī)(也可使用安卓模擬器,推薦夜神模擬器街州,連接官方文檔有)兼丰,直到界面出現(xiàn)手機(jī)屏幕畫面,新建airtest腳本唆缴,保存位置自己選擇就行鳍征。
如果使用期間不小心關(guān)閉了窗口,從這里再次打開面徽。
有兩種定位
選擇好定位方法出現(xiàn)此提示艳丛,選擇“Yes”。
第一種定位:airtest
此方法定位是圖像識(shí)別定位趟紊,很強(qiáng)大质礼。具體可以參照官方文檔。
腳本編寫比較簡(jiǎn)單织阳,點(diǎn)擊左側(cè)方法眶蕉,會(huì)出現(xiàn)截圖的功能,對(duì)應(yīng)截圖的地方就是點(diǎn)擊等操作唧躲,每個(gè)功能操作一遍就熟悉了造挽,比較簡(jiǎn)單就不多做贅述碱璃。
第二種定位:Poco定位
poco是純代碼id等定位,和airtest方法定位不同饭入。
怎么獲取文本嵌器,怎么斷言,官方文檔有詳細(xì)說明谐丢。
同時(shí)爽航,airtest和這個(gè)poco結(jié)合使用非常方便。
綜上:
如果自己有一些代碼的基礎(chǔ)乾忱,可以封裝到方法讥珍,一些特殊場(chǎng)景需要自己寫場(chǎng)景代碼去結(jié)合實(shí)現(xiàn)。
總之窄瘟,airtest實(shí)現(xiàn)UI自動(dòng)化非常方便衷佃。
四. 實(shí)際工作中使用
上面實(shí)現(xiàn)的腳本只是單個(gè)業(yè)務(wù)場(chǎng)景使用,那么怎么把多個(gè)業(yè)務(wù)場(chǎng)景或多個(gè)部門的所有腳本一起執(zhí)行蹄葱,并管理起來呢氏义,所以我介紹的是“.air腳本+airtest批量執(zhí)行框架+github+Jenkins”實(shí)現(xiàn)批量去執(zhí)行,且持續(xù)管理图云。
1.airtest批量執(zhí)行框架:
鏈接:https://pan.baidu.com/s/1hmIp9VJv_W-lXbmsd74jnA? 提取碼:w0tk
此框架僅限單個(gè)手機(jī)執(zhí)行惯悠,網(wǎng)上可以搜索下載很多其他的框架,多嘗試竣况。
執(zhí)行前要安裝python的庫(kù):
pip install airtest
pip install pocoui
(推薦提前安裝python3.6的版本)
1.腳本全部放在air_case文件夾里克婶,my_runner.py里面的device不填表示默認(rèn)連接的手機(jī)。如果有多個(gè)手機(jī)執(zhí)行填入就行帕翻。
2.手機(jī)連連接后(adb devices可以顯示出手機(jī))鸠补,命令窗執(zhí)行 : python my_runner.py
3.執(zhí)行完就是批量執(zhí)行所有的,點(diǎn)擊打開:airtest_case_dadi\export_log\summary.html
4.點(diǎn)擊后進(jìn)入詳情嘀掸,官方報(bào)告文檔:
2. git+jenkins流程配置
好的上面已近完成了air代碼在airtest批量執(zhí)行框架中運(yùn)行,下面要把代碼上傳到git睬塌,然后通過Jenkins定時(shí)拉取并執(zhí)行泉蝌。
如果是公司的測(cè)試機(jī)器同樣部署python SDK JDK等環(huán)境。
上傳代碼到git(參考:https://blog.csdn.net/qq_32846595/article/details/71149312)
Jenkins配置:
1.新建流水線
2.創(chuàng)建完成之后揩晴,點(diǎn)擊執(zhí)行(手機(jī)正常連接至電腦或者服務(wù)器)勋陪,執(zhí)行成功
3.其中在流水線在配置每天定時(shí)執(zhí)行;自動(dòng)發(fā)送測(cè)試報(bào)告(也可以在代碼加郵件發(fā)送功能)等硫兰,可以自己試試诅愚。
綜上:已經(jīng)介紹完所有的流程和具體的環(huán)境配置,如果遇到問題網(wǎng)上搜搜教程等劫映。
五. 總結(jié)
1.airtest目前已經(jīng)是比較成熟了违孝,遇到問題網(wǎng)上都有相應(yīng)的解決方法刹前,可使用性比較高。
2.airtest寫的代碼雌桑,最好集成到airtest框架里面喇喉,airtest適合只寫代碼,復(fù)用到其他框架中校坑。
3.此文章只簡(jiǎn)單介紹了Android APP自動(dòng)化拣技,IOS和WEB都可以做自動(dòng)化,具體方法網(wǎng)上或者官方文檔有詳細(xì)介紹耍目,也是比較簡(jiǎn)單膏斤。
4.airtest最大的優(yōu)勢(shì)我覺的就是方便,無(wú)論工作中臨時(shí)業(yè)務(wù)自動(dòng)化制妄,還是正式業(yè)務(wù)場(chǎng)景自動(dòng)化都可以方便的去使用和實(shí)現(xiàn)掸绞。