AirTest
簡(jiǎn)介
Airtest由網(wǎng)易團(tuán)隊(duì)出品,是一個(gè)基于圖像識(shí)別原理的跨平臺(tái)UI自動(dòng)化測(cè)試框架,適用于游戲和應(yīng)用程序。
特點(diǎn)
? 跨平臺(tái):Airtest幾乎可以在所有平臺(tái)上執(zhí)行游戲和App的自動(dòng)化
? 易操作:使用圖像識(shí)別技術(shù)來(lái)定位UI元素,無(wú)需嵌入任何代碼即可對(duì)游戲和應(yīng)用進(jìn)行自動(dòng)化
? 可擴(kuò)展性:通過(guò)使用Airtest提供的命令行與python API接口,可以很輕松地在大規(guī)模設(shè)備集群上運(yùn)行腳本
★GUI工具:AirtestIDE是一個(gè)強(qiáng)大的GUI工具,可以幫助你錄制和調(diào)試測(cè)試腳本
AirTest能做什么
? Game: 借助圖像識(shí)別和UI層次結(jié)構(gòu),支持所有游戲引擎和應(yīng)用,多平臺(tái),使用方便
? Android: Android源生應(yīng)用測(cè)試的測(cè)試過(guò)程中,Airtest可以發(fā)揮至關(guān)重要的作用,即插即用
? Winodws: 支持Windows應(yīng)用,一次編寫(xiě),跨平臺(tái)運(yùn)行
? iOS: Airtest 支持對(duì)iOS進(jìn)行方便快捷的測(cè)試,可以通過(guò)Poco來(lái)快捷獲取iOS設(shè)備頁(yè)面中的原生元素的位置和信息。
? Web:基于Chrome Devtools Protocol協(xié)議,自動(dòng)錄制生成selenium腳本,精確定位與操作界面元素
AirTest搭建方式
python(了解)
命令: pip install -U airtest
說(shuō)明:安裝python的AirTest庫(kù),通過(guò)python代碼直接調(diào)用AirTest庫(kù)的Api方法
提示:此種方式,需要一定python代碼基礎(chǔ)
Gui工具
工具: AirTestIDE
說(shuō)明:AirTestIDE工具自帶python環(huán)境,無(wú)需單獨(dú)安裝。
提示:使用工具可以錄制操作,也可以手動(dòng)編寫(xiě)調(diào)用api
官網(wǎng)下載地址:http://airtest.netease.com/changelog.html

安裝
將下載好的壓縮包解壓

然后啟動(dòng)


總結(jié)
1.AirTest是由網(wǎng)易公司研發(fā)一款自動(dòng)化測(cè)試工具
2.主要實(shí)現(xiàn):游戲、android應(yīng)用、web項(xiàng)目、windows應(yīng)用、ios應(yīng)用等自動(dòng)化測(cè)試
3.AirTest有Poco、圖像識(shí)別、selenium三個(gè)大類(lèi)庫(kù)
4.AirTest安裝支持pyhon命令行、離線安裝文件進(jìn)行安裝
AirTest連接安卓設(shè)備
注意
?設(shè)備必須處于開(kāi)發(fā)人員模式并且 USB調(diào)試模式已打開(kāi)
? 如果使用的操作系統(tǒng)是Windows操作系統(tǒng),則可能還需要在系統(tǒng)上安裝相應(yīng)的設(shè)備驅(qū)動(dòng)程序
連接安卓手機(jī)


連接安卓模擬器
?啟動(dòng) 安卓模擬器
? 點(diǎn)擊 刷新adb或點(diǎn)擊遠(yuǎn)程設(shè)備連接
? 勾選 兼容模式



成功連上安卓模擬器(如果無(wú)界面,可以點(diǎn)擊重啟ADB)

總結(jié)
1.AirTest連接設(shè)備需要開(kāi)啟開(kāi)發(fā)者模式及usb調(diào)試模式
2.遠(yuǎn)程連接可以修改不同設(shè)備端口號(hào)
3.勾選Use Javacap及Use ADB orientation可解決連接黑屏問(wèn)題
AirTest圖像識(shí)別框架


Touch方法
? 作用:觸摸動(dòng)作
? 常用參數(shù):
? v: 觸摸對(duì)象圖像或坐標(biāo)
? times: 觸摸次數(shù),默認(rèn)1
? duration: 觸摸時(shí)間 默認(rèn)0.01秒
測(cè)試1
使用Touch方法啟動(dòng)桌面應(yīng)用-瀏覽器
運(yùn)行腳本測(cè)試是否成功
實(shí)現(xiàn)步驟
新建腳本
使用Touch觸摸百年奧萊應(yīng)用
運(yùn)行腳本
查看報(bào)告
難點(diǎn)
新建腳本類(lèi)型選擇
Touch觸摸區(qū)域點(diǎn)擊理解
步驟一 新建腳本類(lèi)型選擇
.air AirTest項(xiàng)目:生成一個(gè)項(xiàng)目名稱(chēng).air目錄,目錄下有一個(gè)項(xiàng)目名.py文件
.py 純Python(高級(jí)用戶(hù)): 生成一個(gè)項(xiàng)目名.py文件
區(qū)別
相同點(diǎn):都是python文件
不同點(diǎn):腳本文件初始化代碼不同,一個(gè)采用默認(rèn)值無(wú)法看到,一個(gè)可以看到默認(rèn)值,進(jìn)行修改
提示
AirTest框架自帶python解釋器及標(biāo)準(zhǔn)庫(kù),無(wú)需單獨(dú)安裝python環(huán)境
步驟二 使用Touch觸摸瀏覽器
點(diǎn)擊Touch

拉選瀏覽器應(yīng)用圖標(biāo)

形成這樣一個(gè)腳本

步驟三 運(yùn)行腳本
1.運(yùn)行腳本

模擬器中的瀏覽器被打開(kāi)了

2.運(yùn)行單行代碼

模擬器的瀏覽器也一樣打開(kāi)了

步驟四 查看報(bào)告
快捷鍵 Ctil+L

wait方法
作用:等待某個(gè)元素出現(xiàn),如果出現(xiàn)返回元素的中心點(diǎn)坐標(biāo),否則拋出TargetNotFoundError異常
常用參數(shù):
v: 圖片
timeout: 等待超時(shí),默認(rèn)找20s
interval: 每次匹配的時(shí)間間隔
需求(基本使用)
啟動(dòng)瀏覽器app應(yīng)用
分類(lèi)出現(xiàn)就進(jìn)行觸摸點(diǎn)擊操作

需求(擴(kuò)展使用)
啟動(dòng) 瀏覽器app應(yīng)用
點(diǎn)擊分類(lèi)
在分類(lèi)菜單中,點(diǎn)擊最新游戲,已0.1秒找一次,最多找5秒鐘

總結(jié)
作用:等待頁(yè)面元素出現(xiàn)
默認(rèn):0.5秒找一次,默認(rèn)最多找20s
應(yīng)用:推薦與其他支持坐標(biāo)點(diǎn)操作API一起使用
swipe滑動(dòng)元素
作用:滑動(dòng)-從屏幕的一個(gè)位置滑動(dòng)到屏幕另一個(gè)位置
常用參數(shù):
★ v1: 圖片 或者 坐標(biāo)(x,y)
★ v2: 圖片 或者 坐標(biāo)(x,y), 從v1滑到v2
● vector: [x,y]錄制時(shí)自動(dòng)生成,記錄了屏幕中的滑動(dòng)比例,向右為X軸正向,向下為Y軸正向
需求
打開(kāi)設(shè)置,滑到最下面

注意
作用:兩個(gè)坐標(biāo)點(diǎn)或兩個(gè)元素之間滑動(dòng)
注意:坐標(biāo)點(diǎn)使用時(shí),每組值需要使用小括號(hào);
exists方法
作用:判斷頁(yè)面元素是否存在指定元素,如果存在就返回元素中心點(diǎn)坐標(biāo)(注:只找一次)
常用參數(shù):
v: 圖片
返回:到找圖片則返回圖片中心點(diǎn)坐標(biāo),否則返回False
需求
前置條件 瀏覽器已啟動(dòng)
查找 首頁(yè) 是否存在

exists方法與wait方法區(qū)別
共同點(diǎn):
● 找元素
● 元素存在,返回坐標(biāo)點(diǎn)
區(qū)別:
● exists:只找一次元素,未找到返回False,適合判斷動(dòng)作,元素可存或不存在當(dāng)前頁(yè)面。
●wait: 未找到元素時(shí),默認(rèn)會(huì)找20s,然后拋異常,適合等待加載慢的頁(yè)面,元素必須存在頁(yè)面上;
text方法
作用:輸入文本操作
常用參數(shù):
text: 要輸入的文本(注:輸入的位置為當(dāng)前頁(yè)面默認(rèn)焦點(diǎn)元素一般配合touch一起使用)
enter: 完整輸入后自動(dòng)執(zhí)行Enter操作,默認(rèn)為T(mén)rue
keyevent方法
作用:模擬鍵盤(pán)按鍵輸入,支持鍵碼如:3為home鍵
常用參數(shù):
keyname: 固定鍵名或鍵碼 (https://www.cnblogs.com/findyou/p/5614178.html)
snapshot方法
作用:截取當(dāng)前屏幕圖片,可以在測(cè)試報(bào)告顯示。
常用參數(shù):
Filename: 保存截屏為指定文件
msg: 描述測(cè)試點(diǎn),可以在HTML報(bào)告中呈現(xiàn)
sleep方法
作用:暫停時(shí)間
常用參數(shù):
secs: 延遲時(shí)間(s), 默認(rèn)1.0s
需求
啟動(dòng)瀏覽應(yīng)用
點(diǎn)擊搜索框
輸入 王者榮耀 點(diǎn)擊搜索
屏幕截圖 img01.jpg
暫停 3秒
將應(yīng)用置于后臺(tái)(返回桌面)


assert_exists方法
作用:斷言(判斷)頁(yè)面存在元素
常用參數(shù):
★ v: 圖片(要判斷頁(yè)面是否存在元素)
● msg:描述測(cè)試點(diǎn)
●return: 找到圖片則返回圖片中心點(diǎn)坐標(biāo),否則將 raise AssertionError
assert_not_exists方法
作用:斷言(判斷)頁(yè)面不存在元素
常用參數(shù):
★ v: 圖片(注:判斷當(dāng)前頁(yè)面不存在圖片元素,不存在通過(guò),存在失敗)
● msg:描述測(cè)試點(diǎn)(測(cè)試報(bào)告中顯示)
assert_equal方法
作用:判斷第一個(gè)值與第二個(gè)值相等
常用參數(shù):
★ first: 第一個(gè)值
● second: 第二個(gè)值
● msg:描述此斷言語(yǔ)句對(duì)應(yīng)的測(cè)試點(diǎn)內(nèi)容
assert_not_equal方法
作用:判斷第一個(gè)條目與第二個(gè)條目不相等
常用參數(shù):
★ first: 第一個(gè)值
● second: 第二個(gè)值
● msg:描述此斷言語(yǔ)句對(duì)應(yīng)的測(cè)試點(diǎn)內(nèi)容
需求
啟動(dòng) 瀏覽器應(yīng)用
斷言是否存在 搜索按鈕
點(diǎn)擊分類(lèi)
斷言不存在 搜索按鈕
斷言 False 與 exists(搜索按鈕圖片)

發(fā)現(xiàn)到了斷言不存在的時(shí)候報(bào)錯(cuò),是因?yàn)榇嬖谒阉靼粹o,可以改成斷言存在,則可以通過(guò)
AirTest連接IOS真機(jī)
所需環(huán)境
硬件
一臺(tái)蘋(píng)果電腦 如:mac筆記本
一部iphone手機(jī)
軟件
iOS-Tagent
xcode
iproxy
AirtestIDE 工具
軟件環(huán)境
iOS-Tagent
作用:在手機(jī)上創(chuàng)建一個(gè)WebDriver服務(wù)器,可用于遠(yuǎn)程控制iOS設(shè)備,定位UI元素
下載:https://github.com/facebookarchive/WebDriverAgent
運(yùn)行依賴(lài):xcode

xcode
作用:ios開(kāi)發(fā)集成工具,在這理主要作用為運(yùn)行WebDriverAgen文件到手機(jī)
下載:AppSotre->平臺(tái)搜索xcode
運(yùn)行依賴(lài):開(kāi)發(fā)者賬號(hào)
xcode需要的操作
添加開(kāi)發(fā)者賬號(hào)(普通的appleID即可)
配置WebDriverAgent(Team、 Product Bundle Identifiier)
測(cè)試運(yùn)行WebDriverAgentRunner到手機(jī)
xcode設(shè)置
1.添加開(kāi)發(fā)者賬號(hào)(普通的appleID即可)

2.配置WebDriverAgent(Team、 Product Bundle Identifiier)
前提
使用xcode打開(kāi) 第一步下載的WebDriverAgent

3. 測(cè)試運(yùn)行WebDriverAgentRunner到手機(jī)
前提:將真機(jī)使用數(shù)據(jù)線連接上mac電腦

3. 測(cè)試運(yùn)行WebDriverAgentRunner到手機(jī)失敗
排查思路
在xcode中點(diǎn)擊Test后,第一次將WebdriverRunner時(shí),手機(jī)需要信任該項(xiàng)目(設(shè)置->通用->設(shè)備管理)
在手機(jī)中啟用UI自動(dòng)化 (設(shè)置->開(kāi)發(fā)者->Enable UI Automation)
如果有其他異常,根據(jù)異常提示信息自行參考百度或訪問(wèn)https://github.com/appium/appium/blob/master/docs/en/drivers/ios-xcuitest-real-devices.md 查閱相關(guān)解決方案
iproxy
作用:設(shè)置代理-將iPhone端口映射到電腦端口,通過(guò)訪問(wèn)電腦的端口訪問(wèn)到手機(jī)的端口了
下載: brew install libimobiledevice
運(yùn)行: iproxy 8100 8100
驗(yàn)證
查看:打開(kāi)瀏覽器輸入 http://127.0.0.1:8100/status 出現(xiàn)json格式連接信息
抓屏:http://127.0.0.1:8100/inspector

AirtestIDE 工具:
作用:編寫(xiě)自動(dòng)化代碼工具
下載: http://airtest.netease.com/changelog.html

連接真機(jī)步驟
1.將真機(jī)使用數(shù)據(jù)線連接電腦
2.啟動(dòng)xcode并打開(kāi)配置好的 iOS-Tagent項(xiàng)目(菜單-Product->Test 啟動(dòng)自動(dòng)化服務(wù)程序)
3.打開(kāi)終端 運(yùn)行:iproxy 8100 8100 (啟動(dòng) 端口映射 服務(wù)程序)
4.啟動(dòng)AirTestIDE 工具 (連接ios設(shè)備-> connect按鈕)
注意事項(xiàng)
1.在xcode中點(diǎn)擊Test前,檢查項(xiàng)目默認(rèn)終端是否選擇真機(jī)設(shè)備
2.點(diǎn)擊在xcode中Test之后,要查看控制信息,如果控制臺(tái)沒(méi)任何信息輸出,可以等待或者多Test幾次,直到控制臺(tái)輸出啟動(dòng)相關(guān)信息
3.xcode配置iOS-Tagent只需第一次配置,之后使用無(wú)需在單獨(dú)配置,切莫亂修改參數(shù);
4.真機(jī)設(shè)備中,要開(kāi)啟自動(dòng)化測(cè)試和信任iOS-Tagent項(xiàng)目
總結(jié)
1.Api使用方法和安卓沒(méi)有區(qū)別
2.ios和安卓的區(qū)別在于環(huán)境搭建文章來(lái)源:http://www.zghlxwxcb.cn/news/detail-441999.html
從移動(dòng)端測(cè)試來(lái)看,電腦端和Web 端操作也差不多??勺孕袦y(cè)試。文章來(lái)源地址http://www.zghlxwxcb.cn/news/detail-441999.html
到了這里,關(guān)于自動(dòng)化測(cè)試-AirTest-移動(dòng)端測(cè)試-筆記的文章就介紹完了。如果您還想了解更多內(nèi)容,請(qǐng)?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!