【Android自动化测试】Robot Framework+adb框架(三)——L3公共层
前言
Robot Framework是一款用Python編寫的通用型測試框架,具有良好的可擴展性,支持關(guān)鍵字驅(qū)動,可以同時測試多種類型客戶端(Web,PC,移動端)或者接口,也可以進行分布式測試執(zhí)行。常用于驗收測試和驗收測試驅(qū)動開發(fā)(ATDD)的自動化測試。雖然框架本身是基于Python編寫的,但也可以在Jython(Java)和IronPython(.NET)上運行,提供跨平臺支持。
Robot Framework 框架是一個通用的應(yīng)用和技術(shù)的獨立框架。它有一個高度模塊化的架構(gòu),如圖所示;
Robot Framework生態(tài)系統(tǒng)
Robot Framework框架具有非常豐富的生態(tài)系統(tǒng),它不僅具有易于使用的表格測試數(shù)據(jù)規(guī)則,可精細的控制關(guān)鍵字,支持行為驅(qū)動,提供遠程測試執(zhí)行接口進行分布式測試。這些功能由各種通用測試庫,特定測試插件和工具組成。
Robot Framework框架除了自身提供了非常多的基礎(chǔ)數(shù)據(jù)庫功能,也支持第三方擴展庫,同時提供了非常多的內(nèi)建工具,擴展接口,方便框架與其他系統(tǒng)進行對接。這些一起構(gòu)建了一套全面且易于擴展的Robot Framework框架系統(tǒng)。
1.基礎(chǔ)庫
?Builtin:提供內(nèi)置常用的關(guān)鍵字
?Dialogs:提供暫停測試執(zhí)行以獲得用戶輸入的方法
?Collection:提供用于處理Python列表,字典的關(guān)鍵字
?OperatingSystem:在Robot Framework:系統(tǒng)中執(zhí)行各種與操作系統(tǒng)相關(guān)的任務(wù)
?Remote:作為Robot Framework與其他測試庫之間的代理,實際運行的測試庫可以在不同機器上。
?ScreenShot:提供用于捕捉桌面 屏幕截圖的基本庫。
?String:用于生成,修改,驗證字符串的庫。
?Telnet:可以連接Telnet服務(wù)器,并在打開的連接上執(zhí)行命令。
?XML:用于生成,修改和驗證XML文件的庫。
?Process:用于在系統(tǒng)中運行過程的庫。
?DataTime:用于日期和時間轉(zhuǎn)換的庫。
2.擴展庫
?AndroidLibrary:用于Android自動化測試的庫,它內(nèi)部使用的是Calabash Android.
?AnywhereLibrary:用于測試單頁應(yīng)用程序(SPA)的庫,它內(nèi)部使用的是Selenium Webdriver和Appium.
?AppiumLibrary:用于Android和ios測試的庫,它內(nèi)部使用的是Appium。
?ArchiveLibrary:用于處理zip和zar歸檔的庫。
?AutoItLibrary:用于Windows GUI的測試庫,它內(nèi)部使用AutoIt作為驅(qū)動程序。
?DatabaseLibrary:用于數(shù)據(jù)庫測試的庫,分為Java和Python兩類庫,一般默認是基于Python的庫。
?DiffLibrary:用于兩個文件差異比較的庫。
?DjangoLibrary:Python Web框架Django的庫。
?FakerLibrary:虛擬測試數(shù)據(jù)生成器Faker的庫。
?FTPLibrary:用于Robot Framework測試和FTP服務(wù)器的庫。
?HttpLibrary.HTTP:用于使用請求進行HTTP級別測試的庫。
?iOSLibrary:用于iOS自動化測試的庫,它內(nèi)部使用的是Calabash iOS.
?ImageHorizonLibrary:GUI自動化測試的,基于圖像識別的,跨平臺的純Python庫。
?MongoDBLibrary:使用PyMongo和MongoDB進行交互的庫。
?MQTTLLibrary:用于測試MQTT代理和應(yīng)用程序的庫。
?Rammbock:通用網(wǎng)絡(luò)協(xié)議測試庫,提供簡單的方式來指定網(wǎng)絡(luò)數(shù)據(jù)包,并檢測發(fā)送和接受數(shù)據(jù)包的結(jié)果。
?SikuliLibrary:提供關(guān)鍵字以通過Sikulix測試用戶界面。
?Selenium2Library:使用Selenium2的Web測試庫。
?SSHLibrary:通過SSH連接啟用在遠程計算機上執(zhí)行的命令,還支持使用SFTP傳輸文件。
?SwingLibrary:使用SwingGUI測試Java應(yīng)用程序的庫
3.內(nèi)建工具
?Rebot:基于XML輸出生成日志和報告,將多個輸出組合在一起的工具。
?Libdoc:用于為測試庫和資源文件生成關(guān)鍵字文檔的工具。
?Testdoc:基于Robot Framework測試用例生成高層次HTML文檔的工具。
?Tidy:清理和轉(zhuǎn)換Robot Framework測試數(shù)據(jù)文件格式的工具。
4.編輯器
?RIDE:獨立的Robot Framework測試數(shù)據(jù)編輯器。
?Atom Plugin:Atom編輯器中的Robot Framework插件。
?Eclipse Plugin:Eclipse IDE的Robot Framework插件。
?Gedit:Gedit的語法高亮顯示。
?Robot Plugin For Intelli IDEA:IDEA編輯器的Robot Framework插件。
?Sublime Assistant:Sublime編輯器的Robot Framework插件。
5.其他插件
?BbBot:用于將Robot Framework測試結(jié)果(即output.xml文件)序列化為SQLite數(shù)據(jù)庫的工具。
?Fixml:用于修復(fù)破壞的Robot Framework輸出文件的工具。
?Mabot:輸出手工測試與Robot Framework兼容格式的報告文件。
?Pabot:Robot Framework測試用例并行執(zhí)行器。
?RFDoc:用于存儲和搜索Robot Framework測試庫和資源文件文檔的Web系統(tǒng)。
?Robot Corder:通過錄制用戶交互掃描Chrome瀏覽器中HTML頁面來生成Selenium IDE.
?Robot Framework Hub:輕量級Web服務(wù)器,能通過瀏覽器對Robot Framework測試資產(chǎn)進行訪問。
?Robot Framework Lexer:用于Pygments突出顯示Robot Framework語法。
?Robot Tool:可以與Robot Framework一起使用的支持工具的集合。
?Status Checker:驗證執(zhí)行Robot Framework測試用例時預(yù)期的狀態(tài)和日志消息的工具
?
一、L3公共層.robot
以下是封裝的整個項目公用的關(guān)鍵字。
L3層關(guān)鍵字.robot
*** Settings *** Library Public.py*** Variables *** ${air} ${EMPTY}*** Keywords *** 截圖[Arguments] ${image_name}Pull Pic ${image_name}${value} Image Compare Similarity ${image_name}[Return] ${value}裁剪圖片[Arguments] ${image_name} ${x1} ${x2} ${y1} ${y2}Crop Pic ${image_name} ${x1} ${x2} ${y1} ${y2}范圍斷言[Arguments] ${max} ${value} ${min}Should Be True ${max}>=${value}>=${min} 判斷值是否在規(guī)定范圍內(nèi)大小斷言[Arguments] ${value1} ${value2}Should Be True ${value1}>=${value2}布爾斷言[Arguments] ${flag}should be true ${flag}返回錄制頁面返回按鈕返回按鈕返回按鈕返回按鈕返回按鈕返回按鈕向上滑動Cmd adb shell input swipe 160 230 160 30 1000Cmd adb shell input swipe 160 230 160 30 1000向下滑動Cmd adb shell input swipe 160 60 160 230 1000Cmd adb shell input swipe 160 60 160 230 1000返回按鈕Cmd adb shell input tap 40 25菜單按鈕Cmd adb shell input tap 50 210點擊第一欄Cmd adb shell input tap 160 80點擊第二欄Cmd adb shell input tap 160 145點擊第三欄Cmd adb shell input tap 160 190點擊第四欄Cmd adb shell input tap 160 230下一步Cmd adb shell input tap 280 25點擊提示Cmd adb shell input tap 160 225急減速Cmd adb shell "am broadcast -a com.askey.dvr.eventsending.EVENT_NOTIFY_EVENT_DETECT --ei eventType 103 --el timeStamp `date +%s`000"sleep 3獲取亮度Cmd adb root${brightness} Cmd Popen adb shell cat sys/class/leds/lcd-backlight/brightness[Return] int(${brightness})獲取圖片相似度[Arguments] ${image_name}${value} Image Compare Similarity ${image_name}[Return] ${value}屏幕關(guān)閉時間-永久返回錄制頁面菜單按鈕Cmd adb shell input tap 160 220點擊第二欄點擊第二欄點擊第二欄Cmd adb shell input tap 210 110返回錄制頁面log 屏幕關(guān)閉時間設(shè)置為永久更新設(shè)備時間Update Time切換設(shè)備模式[Arguments] ${mode}Emmc Mode ${mode}sleep 70觸發(fā)中碰撞Log 觸發(fā)中碰撞事件Cmd adb shell "am broadcast -a com.askey.dvr.eventsending.EVENT_NOTIFY_EVENT_DETECT --ei eventType 101 --el timeStamp `date +%s`000"sleep 1Cmd adb shell input keyevent tap 160 230觸發(fā)中碰撞n次[Arguments] ${num} ${time}FOR ${i} IN RANGE 1 int(${num}+1)Log 觸發(fā)中碰撞:${i}/${num}Cmd adb shell "am broadcast -a com.askey.dvr.eventsending.EVENT_NOTIFY_EVENT_DETECT --ei eventType 101 --el timeStamp `date +%s`000"sleep ${time}Cmd adb shell input keyevent tap 160 230ENDSD卡掛載名稱${sd} Sdcard[Return] ${sd}[0]獲取所有文件列表[Arguments] ${sd} ${flag}${allfile} AllFiles ${sd} ${flag}[Return] ${allfile}合并列表[Arguments] ${filelist1} ${filelist2}${filelist} ConformList ${filelist1} ${filelist2}[Return] ${filelist}獲取設(shè)備系統(tǒng)時間${time} GetDeviceDate[Return] ${time}一般錄影文件列表(SDcard)[Arguments] ${sd}${file} NormalFilesSD ${sd}[Return] ${file}文件拷貝到本地(SDcard)[Arguments] ${sd} ${file_type} ${file} ${num} ${main_2nd}${copyfile} CopyFileSD ${sd} ${file_type} ${file} ${num} ${main_2nd}[Return] ${copyfile}還原Cmd adb shell settings put global event_time_span 10/5Cmd adb shell settings put global event_pics 0,5,10,15手動觸發(fā)碰撞Cmd adb shell input tap 290 205抓logLogcat總結(jié)
以上是生活随笔為你收集整理的【Android自动化测试】Robot Framework+adb框架(三)——L3公共层的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 上网行为管理(使用软件Panabit)
- 下一篇: 小米8android p慢,给力 小米8