Appium+python自動化(三十四)- 有圖有真相,很美很精彩 - 螢幕截圖和Android APP型別簡介(超詳解)
簡介
在實際自動化專案執行過程中,很多時候App可以會出現各種異常,為了更好的定位問題,除了捕捉日誌我們還需要對執行時的裝置狀態來進行截圖。從而達到一種“有圖有真相”的效果。
截圖方法
方法1
save_screenshot() 該方法直接儲存當前螢幕截圖到當前指令碼所在檔案位置。
driver.save_screenshot('login.png')
檢視方法1原始碼:
方法2
get_screenshot_as_file(self, filename)
將截圖保留到指定檔案路徑
driver.get_screenshot_as_file('./images/login.png')
檢視方法2原始碼:
實踐案例
測試場景
在考研幫App登入頁面輸入使用者名稱和密碼之後截圖,分別儲存到當前檔案和指定的檔案路徑。
程式碼實現
參考程式碼
# coding=utf-8 # 1.先設定編碼,utf-8可支援中英文,如上,一般放在第一行 # 2.註釋:包括記錄建立時間,建立人,專案名稱。 ''' Created on 2019-8-21 @author: 北京-巨集哥 QQ交流群:707699217 Project:學習和使用appium自動化測試-螢幕截圖 ''' # 3.匯入模組 from appium import webdriver from selenium.common.exceptions import NoSuchElementException desired_caps={} desired_caps['platformName']='Android' desired_caps['deviceName']='127.0.0.1:62025' desired_caps['platforVersion']='5.1.1' desired_caps['automationName']='uiautomator2' desired_caps['app']=r'C:\Users\DELL\Downloads\kaoyanbang.apk' desired_caps['appPackage']='com.tal.kaoyan' desired_caps['appActivity']='com.tal.kaoyan.ui.activity.SplashActivity' desired_caps['noReset']='False' desired_caps['unicodeKeyboard']="True" desired_caps['resetKeyboard']="True" driver=webdriver.Remote('http://localhost:4723/wd/hub',desired_caps) driver.implicitly_wait(2) #定義的點選“取消”按鈕方法 def check_cancelBtn(): print('check cancelBtn') try: cancelBtn = driver.find_element_by_id('android:id/button2') except NoSuchElementException: print('no cancelBtn') else: cancelBtn.click() #定義的點選“跳過”按鈕方法 def check_skipBtn(): print('check skipBtn') try: skipBtn = driver.find_element_by_id('com.tal.kaoyan:id/tv_skip') except NoSuchElementException: print('no skipBtn') else: skipBtn.click() #呼叫點選“取消”按鈕方法 check_cancelBtn() #呼叫點選“跳過”按鈕方法 check_skipBtn() driver.find_element_by_id('com.tal.kaoyan:id/login_email_edittext').clear() driver.find_element_by_id('com.tal.kaoyan:id/login_email_edittext').send_keys('55555') driver.find_element_by_id('com.tal.kaoyan:id/login_password_edittext').send_keys('zxw2018') driver.save_screenshot('login.png') driver.get_screenshot_as_file('./images/login.png') driver.find_element_by_id('com.tal.kaoyan:id/login_login_btn').click()
注意:如果指定路徑出現中文字元時,需要加上u’檔案路徑’進行轉碼
App三種類型與區別
原生應用程式:(Native App)
原生APP是什麼?原生APP就是利用Android、iOS平臺官方的開發語言、開發類庫、工具進行開發。比如安卓的java語言,iOS的object-c 語言。在應用效能上和互動體驗上應該是最好的。
優點:
1、可訪問手機所有功能、可實現功能最齊全;
2、執行速度快、效能高,絕佳的使用者體驗;
3、支援大量圖形和動畫。不卡,反應快。
4、比較快捷地使用裝置端提供的介面,處理速度上有優勢。
缺點:
1、在過去主要是成本高、週期長,Android和iOS都需要單獨開發。
2、更新版本需要重新下載安裝包。
混合應用程式(Hybrid App)
即利用了原生APP的開發技術還應用了HTML5開發技術,是原生和HTML5技術的混合應用。混合比例不限。
優點:
1、開發週期短;
2、功能更新發布快;
缺點:
1、使用者體驗不如本地應用;
2、效能稍慢(需要連線網路);
Web版APP (Web App)
本質就是瀏覽器功能的疊加,用普通Web開發語言開發的,通過瀏覽器執行。
優勢:
1、支援範圍廣;
2、開發成本低、週期短。
缺點:
1、對聯網要求高,離線不能做任何操作;
2、功能有限;
3、執行速度慢,頁面不能承載太多東西;
4、圖片和動畫支援性不高;
5、如果使用者使用更多的新型瀏覽器,那麼就會出現執行問題。
Web App、Hybrid App、Native App 技術特性
手遊app與手機App
手遊一般使用引擎開發,現在著名的有cocos2d和unity3d。兩者都是使用引擎自帶的語言進行開發,主流的分別是c++和c#,雖然在開發過程中也有按鈕等控制元件的概念,但當執行時由引擎渲染後就變成了一副簡單的圖片:
手機App一般使用Android SDK開發,使用Java編寫。通過Android提供的服務,我們可以獲取App當前視窗的檢視資訊,進而查詢和操作按鈕等控制元件,以完成自動化測試,如Uiautomator。這個過程是標準化的,從技術上來說沒有任何難度,因此各個公司各個App自動化測試的方法都大同小異。
小結
好了,這部分的內容比較簡單,小夥伴們和同學們掌握上邊的兩個截圖的方法,瞭解一下Android APP的型別就可以。
您的肯定就是我進步的動力。如果你感覺還不錯,就請鼓勵一下吧!記得點波 推薦 哦!!!(點選右邊的小球即可!(^__^) 嘻嘻……)
個人公眾號 微信群 (微信群已滿100,可以加巨集哥的微信拉你進群,請備註:進群)
&n