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,可以加宏哥的微信拉你進群,請備注:進群)          

                                                                 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM