zoukankan      html  css  js  c++  java
  • Airtest Project的探索和使用

    Airtest使用参考博文: https://testerhome.com/topics/12391

    1. 安装Python 3

    2. 安装pip: 安装方法参考另外一篇随笔

    pip3部署:

    C:Userscmd>python2 -m pip install --upgrade pip

    #检查pip3 python3已安装库 C:Userscmd>pip3 list

    #检查pip3 有什么库需要升级 C:Userscmd>pip3 list -o

    升级该库  C:Userscmd>pip3 install --upgrade setuptools

     

    虚拟Python virtualenv环境部署

    C:Userscmd>pip3 install virtualenv

    安装Airtest提供的Android App UI测试库pocoui

     通过pip 命令 pip install pocoui 安装poco库,这个过程等待的时间会比较长一点:

    C: Userswb-liuying.ae>pip install pocoui

    #检查都依赖安装了哪些 pip list

    官网下载Airtest Project,下载之后解压就可以直接使用

    http://airtest.netease.com/

    手机连上电脑,手机的开发者模式开关打开,还要打开“允许通过USB调试修改权限或模拟点击”的开关

    Airtest右边的设备窗模块点击刷新ADB,然后右上角点击connect连接手机,

    手机连接上后Airtest会下发一些安装,点击允许

     PocoService 
    com.netease.open.pocoservice.test
    Yosemite(与输入法相关)

    安装好了之后,鼠标点击屏幕应该是可以直接操作了

    可以通过AirtestIDE提供的辅助模块录制脚本,也可以自己编写。

    左边的poco辅助窗,可以用来定位元素,选中锁定按钮,鼠标点击你需要定位的元素,就是看到这个元素的信息

    下面是我自己编写的测试的脚本,试了两台手机可以正常跑。

    # -*- encoding=utf8 -*-
    __author__ = "wb-liuying.ae"
    __title__ = "test script title"
    __desc__ = """
    this is a test script.
    """
    from airtest.core.api import *
    from poco.drivers.android.uiautomation import AndroidUiautomationPoco
    poco = AndroidUiautomationPoco(force_restart=False)
    # start your script here

    clear_app("com.taobao.idlefish")
    sleep(1.0)
    start_app("com.taobao.idlefish")
    sleep(10.0)
    if poco("com.taobao.idlefish:id/pic"):
    poco("com.taobao.idlefish:id/action_bar_right").click()
    poco("com.taobao.idlefish:id/bar_text").long_click()
    poco(text="预发").click()
    start_app("com.taobao.idlefish")
    sleep(10.0)

    while poco("android.widget.FrameLayout").child("android:id/content").child("android.widget.RelativeLayout").child("com.android.packageinstaller:id/dialog_container").child("android.widget.LinearLayout"):
    poco("com.android.packageinstaller:id/permission_allow_button").click()
    sleep(3.0)
    items = poco("android.widget.LinearLayout").child("android:id/content").child("com.taobao.idlefish:id/main_content_layout").child("com.taobao.idlefish:id/id_indicator").child("android.widget.RelativeLayout").child("com.taobao.idlefish:id/indicator_itmes").child("android.widget.RelativeLayout").child("com.taobao.idlefish:id/tab").child("android.widget.LinearLayout").child("com.taobao.idlefish:id/tab_icon")
    items[3].click()
    poco("com.taobao.idlefish:id/login_button").click()
    poco("com.taobao.idlefish:id/ali_user_guide_account_login_btn").click()
    poco("com.taobao.idlefish:id/accountCompleteTextView").click()
    text("aq申诉测试8")
    poco("com.taobao.idlefish:id/content").click()
    text('wb-liuying.ae|Dream123!')
    poco("com.taobao.idlefish:id/loginButton").click()
    items1 = poco("android.widget.LinearLayout").child("android:id/content").child("com.taobao.idlefish:id/main_content_layout").child("com.taobao.idlefish:id/id_indicator").child("android.widget.RelativeLayout").child("com.taobao.idlefish:id/indicator_itmes").child("android.widget.RelativeLayout").child("com.taobao.idlefish:id/tab").child("android.widget.LinearLayout").child("com.taobao.idlefish:id/tab_icon")
    items1[2].click()
    poco("com.taobao.idlefish:id/vmmsi_title").click()
    items = poco("android.widget.LinearLayout").child("android:id/content").child("android.widget.LinearLayout").child("com.taobao.idlefish:id/ansm_list").child("android.widget.FrameLayout").child("android.widget.LinearLayout").child("com.taobao.idlefish:id/stub").child("com.taobao.idlefish:id/imageCard").child("com.taobao.idlefish:id/tv_title")
    items[1].click()
    sleep(10.0)
    snapshot(msg="页面显示正确")
    poco("com.taobao.idlefish:id/left_image").click()
    sleep(1.0)
    items = poco("android.widget.LinearLayout").child("android:id/content").child("android.widget.LinearLayout").child("com.taobao.idlefish:id/ansm_list").child("android.widget.FrameLayout").child("android.widget.LinearLayout").child("com.taobao.idlefish:id/stub").child("com.taobao.idlefish:id/imageCard").child("com.taobao.idlefish:id/tv_title")
    items[3].click()
    sleep(10)
    snapshot(msg="页面显示正常")
    clear_app("com.taobao.idlefish")

    脚本运行之后可以查看自动生成的报告



    使用感受:非常的好用,快捷方便。容易上手。
    遇到的问题:
    试了几台手机,有的能连接并且能操作,有几台不行。所有组件都安装了还是不能操作,不知道什么原因。

    参考的链接:
    官方文档 http://airtest.netease.com/
    Airtest的框架和使用: https://github.com/AirtestProject/airtest
    poco的框架和使用: https://github.com/AirtestProject/poco

  • 相关阅读:
    ASP.NET CORE 使用Consul实现服务治理与健康检查(2)——源码篇
    ASP.NET CORE 使用Consul实现服务治理与健康检查(1)——概念篇
    Asp.Net Core 单元测试正确姿势
    如何通过 Docker 部署 Logstash 同步 Mysql 数据库数据到 ElasticSearch
    Asp.Net Core2.2 源码阅读系列——控制台日志源码解析
    使用VS Code 开发.NET CORE 程序指南
    .NetCore下ES查询驱动 PlainElastic .Net 升级官方驱动 Elasticsearch .Net
    重新认识 async/await 语法糖
    EF添加
    EF修改部分字段
  • 原文地址:https://www.cnblogs.com/xiaohai2003ly/p/8629121.html
Copyright © 2011-2022 走看看