簡介
在實際自動化項目運行過程中,很多時候 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,可以加宏哥的微信拉你進群,請備注:進群)? ? ? ? ??
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?
更多文章、技術交流、商務合作、聯系博主
微信掃碼或搜索:z360901061
微信掃一掃加我為好友
QQ號聯系: 360901061
您的支持是博主寫作最大的動力,如果您喜歡我的文章,感覺我的文章對您有幫助,請用微信掃描下面二維碼支持博主2元、5元、10元、20元等您想捐的金額吧,狠狠點擊下面給點支持吧,站長非常感激您!手機微信長按不能支付解決辦法:請將微信支付二維碼保存到相冊,切換到微信,然后點擊微信右上角掃一掃功能,選擇支付二維碼完成支付。
【本文對您有幫助就好】元

