• 用Airtest和poco实现APP自动登录和退出


    前言

    今天我们将完成1个实操,来实现APP自动登录和退出的流程。

    示例APP为:网易新闻APP; 所用IDE版本为:1.2.3。

    要求

    ① 报告中所有图片要有较高的精度

    ② 登录成功和退出成功必须有断言

    ③ 在报告中显示出哪部分步骤用于登录,哪部分步骤用于退出

    完成登录流程

    ① 打开网易新闻APP

    ② 在底部菜单 “我” 点击登录

    ③ 清除历史账号信息

    ④ 输入账号密码

    ⑤ 点击 “开始使用” 完成登陆操作

    ⑥ 利用出现头像图片来断言登录成功

     

     

    # -*- encoding=utf8 -*-
    __author__ = "Airtest"
    from airtest.core.api import *
    
    # 设置全局图片精度为75
    ST.SNAPSHOT_QUALITY = 75
    
    from poco.drivers.android.uiautomation import AndroidUiautomationPoco
    poco = AndroidUiautomationPoco(use_airtest_input=True, screenshot_each_action=False)
    auto_setup(__file__)
    
    log("以下步骤完成登录操作")
    
    # 利用包名打开网易云新闻
    start_app("com.netease.newsreader.activity")
    sleep(2.0)
    
    # 点击底部菜单“我”
    poco("android.widget.LinearLayout").offspring("android:id/tabs").child("android.widget.LinearLayout")[4].offspring("com.netease.newsreader.activity:id/h6").click()
    # 点击“注册/登录”
    poco("com.netease.newsreader.activity:id/ans").click()
    
    # 点击并清空账号输入框
    poco("com.netease.newsreader.activity:id/af_").click()
    sleep(1.0)
    poco("com.netease.newsreader.activity:id/af_").set_text(" ")
    sleep(1.0)
    
    # 输入账号
    poco("com.netease.newsreader.activity:id/af_").set_text("1882610xxxx")
    # 选择第一种邮箱格式
    touch((411,560))
    sleep(1.0)
    
    # 输入邮箱密码并点击“开始使用”
    poco("com.netease.newsreader.activity:id/ag5").set_text("1111")
    poco("com.netease.newsreader.activity:id/ag7").click()
    sleep(2.0)
    
    # 存在头像图片则断言登录成功
    assert_exists(Template(r"tpl1585550255116.png", record_pos=(-0.337, -0.55), resolution=(1080, 1920)), "登录成功")
    知识点一

    ① 设置图片精度

    当 Airtest版本≥1.1.2 时,我们可以自定义截图压缩精度。Airtest默认取 10 ,如果希望获得更高精度的图片可以将值改为 75

    # 设置全局的截图压缩精度
    import airtest.core.api import *
    ST.SNAPSHOT_QUALITY = xxx  # [1, 99]
    
    # 设置单张截图的压缩精度
    snapshot(quality=my_quality)

    ② 用 start_app("包名") 打开APP

    当我们想要打开某个APP时,除了可以使用 icon点击 或者 Poco的点击 之外,我们还可以使用 start_app("包名") 非常便捷地打开1个APP。获取应用包名的方式在网上有很多,甚至直接搜索“xx应用的包名”也很容易获取到。

    ③ 使用坐标点击

    在上述示例中,我们输入邮箱账号的前缀以后,系统给我们提供了多种邮箱格式以供选择,但写脚本的时候你会发现,使用poco无法很好地识别到这些控件;使用图像识别,又因为几乎是纯文字,很有可能识别效果并不好;这时候可以考虑使用坐标点击,脚本简洁,效果还好

    完成退出流程

    ① 点击 “设置” ,在 “设置” 中定位到 “退出登录”

    ② 点击 “退出登录” ,并点击 “确认退出” 的弹窗

    ③ 利用出现 “登录” 按钮来断言退出成功

     

     

    log("以下步骤完成退出登录操作")
    # 点击设置
    poco(text="设置").click()
    
    # 下滑找到“退出登录”按钮并点击
    swipe(Template(r"tpl1585549988205.png", record_pos=(-0.252, -0.12), resolution=(1080, 1920)), vector=[-0.0957, -0.2859])
    poco("com.netease.newsreader.activity:id/bn4").click()
    
    # 点击弹窗中的“确认退出”
    poco("com.netease.newsreader.activity:id/apz").click()
    
    # 存在登录按钮则断言退出成功
    assert_exists(Template(r"tpl1585550042580.png", record_pos=(-0.003, -0.414), resolution=(1080, 1920)), "退出成功")
    知识点二

    ① 使用 log(str_msg) 在报告显示信息

    我们想在报告中区分,哪部分步骤是用于登录,哪部分步骤是用于退出的,这时候可以利用 log(str_msg) 来完成,只需要在 log() 方法里面传入你想表达的字符串即可。

    ② 混合使用Airtest和Poco脚本

    有些同学提问:脚本里面可不可以混用Airtest和Poco脚本?答案当然是可以的,因为Airtest和Poco都是基于python的测试框架,只要运行环境中存在这俩个库,都是可以根据实际需要随意混用的。

    报告

    最后我们来查看下运行报告,可以看到登录和退出流程都是成功的,步骤标注点显示也很清晰:

     


     

    Airtest官网:http://airtest.netease.com/
    Airtest教程官网:https://airtest.doc.io.netease.com/
    搭建企业私有云服务:https://airlab.163.com/b2b

     

     

  • 相关阅读:
    函数 定义与调用
    python文件基本操作(读,写,追加)
    python集合深浅copy
    day6 bytes类型用法
    字典的增删改查
    一个文件启动Django(基础中的基础)
    Django错误集
    Linux的Shell
    Linux的Vim文本编辑器
    Linux管道符和重定向与环境变量
  • 原文地址:https://www.cnblogs.com/AirtestProject/p/12618706.html
Copyright © 2020-2023  润新知