简介
在实际自动化项目运行过程中,很多时候 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,可以加宏哥的微信拉你进群,请备注:进群)

