zoukankan      html  css  js  c++  java
  • Airtest-UI 自动化集大成者

    前言

    Airtest是由网易研发的一款基于Python的、跨平台的UI自动化测试框架,基于图像识别原理,适用于游戏和App。该项目目前已在Github上面开源:
    https://github.com/AirtestProject/Airtest
    官网地址:
    http://airtest.netease.com/
    官方文档手册非常详细,建议大家入门可以先去看下相关的文档说明。

    为什么需要Airtest?

    众所周知,UI层测试按照平台种类划分有Windows、Linux、Android、Web、小程序等
    针对于移动端Android & IOS平台,有最火的Appium测试框架 http://appium.io/
    Web端有selenium测试框架 http://seleniumhq.org/
    windows应用平台有AutoIT、Pywinauto
    而业界针对游戏类的应用并没有比较好的解决方案,而Airtest测试框架应运而生,基于底层的Airtest和poco:

    • Airtest:基于Python的、跨平台的UI自动化测试框架,基于图像识别原理,适用于游戏和App。
    • Poco:基于UI控件搜索的自动化测试框架,其核心优势是除了对Android、IOS之外,对游戏也是支持的,同时也支持微信小程序、微信小游戏和H5应用。

    Airtest还非常贴心的配备了Airtest IDE,不需要写一行脚本,即可完成脚本的录制。

    Airtest IDE录制

    录制Android平台自动化脚本

    step1 检测设备链接状态

    本地安装的雷电模拟器

    C:UsersAdministrator>adb devices
    List of devices attached
    emulator-5554   device
    
    step2 Airtest IDE连接设备

    可以看到Airtest可以直接将设备画面进行映射,同Appium的inspector或者UIAutomatorViewer.bat工具不一样

    step3 录制脚本

    点击录制即可开启录制功能,并且提供了很多不同的元素操作,如:点击、等待、滑动、断言等等

    这里以柠檬班App为例,录制登录测试用例

    录制回放

    Airtest采取图像识别方式,这种方式比较适合游戏自动化
    但是在脚本的兼容性方面存在一些问题(屏幕的分辨率、图标大小等)。官方也给了几个小的技巧:

    • 1、提升截图技巧-尽量截图完整图片
    • 2、调整图像识别阈值
    • 3、利用灰度图像识别

    这些方式只能尽量优化,并不能根本上解决,所以官方最终建议是尽量使用poco:通过UI元素属性信息定位

    poco

    Airtest提供另外一种更加稳健的元素操作方式-基于UI控件搜索框架poco

    # -*- encoding=utf8 -*-
    __author__ = "Administrator"
    
    from poco.drivers.android.uiautomation import AndroidUiautomationPoco
    poco = AndroidUiautomationPoco(use_airtest_input=True, screenshot_each_action=False)
    
    poco("柠檬班").click()
    poco("com.lemon.lemonban:id/navigation_my").click()
    poco("com.lemon.lemonban:id/fragment_my_lemon_avatar_title").click()
    poco("com.lemon.lemonban:id/et_mobile").set_text(18588220152)
    poco("com.lemon.lemonban:id/et_password").set_text(123456)
    poco("com.lemon.lemonban:id/btn_login").click()
    

    可以看到 poco这种模式更加适合公司项目,如果你自己会Python,还可以在脚本的基础上继续拓展,比如:应用PO设计模式 分层设计 等等。

  • 相关阅读:
    一、编程语言
    1、计算机基础
    四、格式化输出与基本运算符
    二、变量及用户与程序互交
    三、基本数据类型
    查看静态库中有哪些函数
    vs2010 error MSB6006: “cmd.exe”已退出,代码为 1
    ffmpeg formats
    C#启动一个外部程序(3)CreateProcess
    C#启动一个外部程序(2)ShellExecute
  • 原文地址:https://www.cnblogs.com/yyoba/p/11851275.html
Copyright © 2011-2022 走看看