【Android自动化测试】Robot Framework+adb框架(三)——L3公共层
前言
Robot Framework是一款用Python編寫的通用型測試框架,具有良好的可擴展性,支持關鍵字驅動,可以同時測試多種類型客戶端(Web,PC,移動端)或者接口,也可以進行分布式測試執行。常用于驗收測試和驗收測試驅動開發(ATDD)的自動化測試。雖然框架本身是基于Python編寫的,但也可以在Jython(Java)和IronPython(.NET)上運行,提供跨平臺支持。
Robot Framework 框架是一個通用的應用和技術的獨立框架。它有一個高度模塊化的架構,如圖所示;
Robot Framework生態系統
Robot Framework框架具有非常豐富的生態系統,它不僅具有易于使用的表格測試數據規則,可精細的控制關鍵字,支持行為驅動,提供遠程測試執行接口進行分布式測試。這些功能由各種通用測試庫,特定測試插件和工具組成。
Robot Framework框架除了自身提供了非常多的基礎數據庫功能,也支持第三方擴展庫,同時提供了非常多的內建工具,擴展接口,方便框架與其他系統進行對接。這些一起構建了一套全面且易于擴展的Robot Framework框架系統。
1.基礎庫
?Builtin:提供內置常用的關鍵字
?Dialogs:提供暫停測試執行以獲得用戶輸入的方法
?Collection:提供用于處理Python列表,字典的關鍵字
?OperatingSystem:在Robot Framework:系統中執行各種與操作系統相關的任務
?Remote:作為Robot Framework與其他測試庫之間的代理,實際運行的測試庫可以在不同機器上。
?ScreenShot:提供用于捕捉桌面 屏幕截圖的基本庫。
?String:用于生成,修改,驗證字符串的庫。
?Telnet:可以連接Telnet服務器,并在打開的連接上執行命令。
?XML:用于生成,修改和驗證XML文件的庫。
?Process:用于在系統中運行過程的庫。
?DataTime:用于日期和時間轉換的庫。
2.擴展庫
?AndroidLibrary:用于Android自動化測試的庫,它內部使用的是Calabash Android.
?AnywhereLibrary:用于測試單頁應用程序(SPA)的庫,它內部使用的是Selenium Webdriver和Appium.
?AppiumLibrary:用于Android和ios測試的庫,它內部使用的是Appium。
?ArchiveLibrary:用于處理zip和zar歸檔的庫。
?AutoItLibrary:用于Windows GUI的測試庫,它內部使用AutoIt作為驅動程序。
?DatabaseLibrary:用于數據庫測試的庫,分為Java和Python兩類庫,一般默認是基于Python的庫。
?DiffLibrary:用于兩個文件差異比較的庫。
?DjangoLibrary:Python Web框架Django的庫。
?FakerLibrary:虛擬測試數據生成器Faker的庫。
?FTPLibrary:用于Robot Framework測試和FTP服務器的庫。
?HttpLibrary.HTTP:用于使用請求進行HTTP級別測試的庫。
?iOSLibrary:用于iOS自動化測試的庫,它內部使用的是Calabash iOS.
?ImageHorizonLibrary:GUI自動化測試的,基于圖像識別的,跨平臺的純Python庫。
?MongoDBLibrary:使用PyMongo和MongoDB進行交互的庫。
?MQTTLLibrary:用于測試MQTT代理和應用程序的庫。
?Rammbock:通用網絡協議測試庫,提供簡單的方式來指定網絡數據包,并檢測發送和接受數據包的結果。
?SikuliLibrary:提供關鍵字以通過Sikulix測試用戶界面。
?Selenium2Library:使用Selenium2的Web測試庫。
?SSHLibrary:通過SSH連接啟用在遠程計算機上執行的命令,還支持使用SFTP傳輸文件。
?SwingLibrary:使用SwingGUI測試Java應用程序的庫
3.內建工具
?Rebot:基于XML輸出生成日志和報告,將多個輸出組合在一起的工具。
?Libdoc:用于為測試庫和資源文件生成關鍵字文檔的工具。
?Testdoc:基于Robot Framework測試用例生成高層次HTML文檔的工具。
?Tidy:清理和轉換Robot Framework測試數據文件格式的工具。
4.編輯器
?RIDE:獨立的Robot Framework測試數據編輯器。
?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測試結果(即output.xml文件)序列化為SQLite數據庫的工具。
?Fixml:用于修復破壞的Robot Framework輸出文件的工具。
?Mabot:輸出手工測試與Robot Framework兼容格式的報告文件。
?Pabot:Robot Framework測試用例并行執行器。
?RFDoc:用于存儲和搜索Robot Framework測試庫和資源文件文檔的Web系統。
?Robot Corder:通過錄制用戶交互掃描Chrome瀏覽器中HTML頁面來生成Selenium IDE.
?Robot Framework Hub:輕量級Web服務器,能通過瀏覽器對Robot Framework測試資產進行訪問。
?Robot Framework Lexer:用于Pygments突出顯示Robot Framework語法。
?Robot Tool:可以與Robot Framework一起使用的支持工具的集合。
?Status Checker:驗證執行Robot Framework測試用例時預期的狀態和日志消息的工具
?
一、L3公共層.robot
以下是封裝的整個項目公用的關鍵字。
L3層關鍵字.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} 判斷值是否在規定范圍內大小斷言[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}屏幕關閉時間-永久返回錄制頁面菜單按鈕Cmd adb shell input tap 160 220點擊第二欄點擊第二欄點擊第二欄Cmd adb shell input tap 210 110返回錄制頁面log 屏幕關閉時間設置為永久更新設備時間Update Time切換設備模式[Arguments] ${mode}Emmc Mode ${mode}sleep 70觸發中碰撞Log 觸發中碰撞事件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觸發中碰撞n次[Arguments] ${num} ${time}FOR ${i} IN RANGE 1 int(${num}+1)Log 觸發中碰撞:${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}獲取設備系統時間${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手動觸發碰撞Cmd adb shell input tap 290 205抓logLogcat總結
以上是生活随笔為你收集整理的【Android自动化测试】Robot Framework+adb框架(三)——L3公共层的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 上网行为管理(使用软件Panabit)
- 下一篇: 计算机rank函数排名怎么用,用好RAN