首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往
30 篇文章
1
Appium+python自动化(一)- 环境搭建—上(超详解)
2
Appium+python自动化(二)- 环境搭建—下(超详解)
3
Appium+python自动化(三)- SDK Manager(超详解)
4
Appium+python自动化(五)- 模拟器(超详解)
5
Appium+python自动化(六)- 连接模拟器并启动淘宝APP(超详解)
6
Appium+python自动化(七)- 初识琵琶女Appium(千呼万唤始出来,犹抱琵琶半遮面)- 上(超详解)
7
Appium+python自动化(八)- 初识琵琶女Appium(千呼万唤始出来,犹抱琵琶半遮面)- 下(超详解)
8
Appium+python自动化(九)- 定位元素工具(义结金兰的两位异性兄弟)(超详解)
9
Appium+python自动化(十)- 元素定位秘籍助你打通任督二脉 - 上卷(超详解)
10
Appium+python自动化(十一)- 元素定位秘籍助你打通任督二脉 - 下卷(超详解)
11
Appium+python自动化(十二)- Android UIAutomator终极定位凶器(超详解)
12
Appium+python自动化(十三)- 输入中文 - 一次填坑记(超详解)
13
Appium+python自动化(十四)- 与Capability完美懈垢之解读(超详解)
14
Appium+python自动化(十五)- Android 这些基础知识,你知多少???(超详解)
15
Appium+python自动化(十六)- ADB命令,知否知否,应是必知必会(超详解)
16
Appium+python自动化(十七)- 你难道是猴哥失散多年的混血弟弟还是妹妹???- Monkey简介之开山篇(超详解)
17
Appium+python自动化(二十一)- 让猴子按你指令大闹手机 MonkeyScript(超详解)
18
Appium+python自动化(二十二)- 三个臭皮匠助你成就一番霸业-控件坐标获取
19
Appium+python自动化(二十三)- 真假美猴王Monkeyrunner与Monkey傻傻的分不清楚
20
Appium+python自动化(二十四)- 白素贞千年等一回许仙 - 元素等待(超详解)
21
Appium+python自动化(二十五)- 那些让人抓耳挠腮、揪头发和掉头发的事 - 获取控件ID(超详解)
22
Appium+python自动化(二十六)- 烟花一瞬,昙花一现 -Toast提示(超详解)
23
Appium+python自动化(二十八)- 滑呀滑,滑到奈何桥喝碗孟婆汤 - 高级滑动(超详解)
24
Appium+python自动化(三十三)- 本地调试测试代码,远程控制测试环境-Remote(超详解)
25
Appium+python自动化(三十四)- 有图有真相,很美很精彩 - 屏幕截图和Android APP类型简介(超详解)
26
Appium+python自动化(三十五)- 命令启动appium之 appium服务命令行参数(超详解)
27
Appium+python自动化(三十九)-Appium自动化测试框架综合实践 - 代码实现(超详解)
28
Appium+python自动化(四十)-Appium自动化测试框架综合实践 - 代码实现(超详解)
29
Appium+python自动化(四十一)-Appium自动化测试框架综合实践 - 即将落下帷幕
30
Appium+python自动化(四十二)- 寿终正寝完结篇 - 结尾有惊喜,过时不候(超详解)

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的类型就可以。

下一篇
举报
领券