Appium+python自动化(三十四)- 有图有真相,很美很精彩 - 屏幕

系统 1499 0

简介

在实际自动化项目运行过程中,很多时候 App可以会出现各种异常,为了更好的定位问题,除了捕捉日志我们还需要对运行时的设备状态来进行截屏。从而达到一种“ 有图有真相 ”的效果。

截图方法

方法 1

save_screenshot() 该方法直接保存当前屏幕截图到当前脚本所在文件位置。

driver .save_screenshot('login.png')

查看方法1源码:

Appium+python自动化(三十四)- 有图有真相,很美很精彩 - 屏幕截图和Android APP类型简介(超详解)_第1张图片

方法 2

get_screenshot_as_file(self, filename)

将截图保留到指定文件路径

driver .get_screenshot_as_file('./images/login.png')

查看方法2源码:

Appium+python自动化(三十四)- 有图有真相,很美很精彩 - 屏幕截图和Android APP类型简介(超详解)_第2张图片

实践案例

测试场景

在考研帮 App登录页面输入用户名和密码之后截图,分别保存到当前文件和指定的文件路径。

代码实现

Appium+python自动化(三十四)- 有图有真相,很美很精彩 - 屏幕截图和Android APP类型简介(超详解)_第3张图片

参考代码

 

            # 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 技术特性

Appium+python自动化(三十四)- 有图有真相,很美很精彩 - 屏幕截图和Android APP类型简介(超详解)_第4张图片

手游 app与手机App

手游一般使用引擎开发,现在著名的有 cocos2d和unity3d。两者都是使用引擎自带的语言进行开发,主流的分别是c++和c#,虽然在开发过程中也有按钮等控件的概念,但当运行时由引擎渲染后就变成了一副简单的图片:

手机 App一般使用Android SDK开发,使用Java编写。通过Android提供的服务,我们可以获取App当前窗口的视图信息,进而查找和操作按钮等控件,以完成自动化测试,如Uiautomator。这个过程是标准化的,从技术上来说没有任何难度,因此各个公司各个App自动化测试的方法都大同小异。

小结

   好了,这部分的内容比较简单,小伙伴们和同学们掌握上边的两个截图的方法,了解一下Android APP的类型就可以。

您的肯定就是我进步的动力。 如果你感觉还不错,就请鼓励一下吧!记得点波  推荐  哦!!!(点击右边的小球即可! (^__^)  嘻嘻……)

Appium+python自动化(三十四)- 有图有真相,很美很精彩 - 屏幕截图和Android APP类型简介(超详解)_第5张图片

 

       个人公众号                                                              微信群  (微信群已满100,可以加宏哥的微信拉你进群,请备注:进群)          

Appium+python自动化(三十四)- 有图有真相,很美很精彩 - 屏幕截图和Android APP类型简介(超详解)_第6张图片                                                                   Appium+python自动化(三十四)- 有图有真相,很美很精彩 - 屏幕截图和Android APP类型简介(超详解)_第7张图片


更多文章、技术交流、商务合作、联系博主

微信扫码或搜索:z360901061

微信扫一扫加我为好友

QQ号联系: 360901061

您的支持是博主写作最大的动力,如果您喜欢我的文章,感觉我的文章对您有帮助,请用微信扫描下面二维码支持博主2元、5元、10元、20元等您想捐的金额吧,狠狠点击下面给点支持吧,站长非常感激您!手机微信长按不能支付解决办法:请将微信支付二维码保存到相册,切换到微信,然后点击微信右上角扫一扫功能,选择支付二维码完成支付。

【本文对您有帮助就好】

您的支持是博主写作最大的动力,如果您喜欢我的文章,感觉我的文章对您有帮助,请用微信扫描上面二维码支持博主2元、5元、10元、自定义金额等您想捐的金额吧,站长会非常 感谢您的哦!!!

发表我的评论
最新评论 总共0条评论