zoukankan      html  css  js  c++  java
  • Appium+python自动化(三十四)- 有图有真相,很美很精彩

    简介

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

                                                                     

  • 相关阅读:
    Django基础
    MySQL(索引)
    MySQL(进阶部分)
    MySQL(Python+ORM)
    JavaScript的对象
    abc
    Let's Encrypt,免费好用的 HTTPS 证书
    Java调试那点事
    Memcache mutex 设计模式
    从 Nginx 默认不压缩 HTTP/1.0 说起
  • 原文地址:https://www.cnblogs.com/du-hong/p/11286888.html
Copyright © 2011-2022 走看看