一. Airtest工具介绍

1.1 Airtest简介

1) Airtest是网易开发的一款UI自动化测试框架

2) 两大核心功能: 基于poco的UI控件识别, 基于airtest的图像识别

1.2 基本操作

1.2.1 工具包下载

pip install airtest

pip install pocoui#注意此处不是poco,而是pocoui

1.2.2 设备连接

#-*- coding: utf-8 -*-#@Author : chinablue

from airtest.core.api importconnect_device, set_current

device_ip= "127.0.0.1"device_port= "5037"device_uuid= "3f9d6008" #通过[adb devices]来获取

#连接设备

d = connect_device(f"Android://{device_ip}:{device_port}/{device_uuid}?cap_method=ADBCAP")#切换到指定设备

set_current(device_uuid)#判断是否亮屏

ifd.is_screenon():

d.home()#点击Home键

else:

d.wake()#唤醒屏幕

1.2.3 基于poco的定位操作

#-*- coding: utf-8 -*-#@Author : chinablue

from airtest.core.api importconnect_device, start_appfrom poco.drivers.android.uiautomation importAndroidUiautomationPoco

device_ip= "127.0.0.1"device_port= "5037"device_uuid= "3f9d6008" #通过[adb devices]来获取

#连接设备

d = connect_device(f"Android://{device_ip}:{device_port}/{device_uuid}?cap_method=JAVACAP")#初始化poco对象

poco = AndroidUiautomationPoco(device=d, use_airtest_input=True, screenshot_each_action=False)#点击[home]键

d.home()#打开app

start_app(package="com.tencent.mm") #app包名获取命令: adb shell dumpsys window windows|findstr "mCurrentFocus"

#通过Airtest-IDE来查看页面元素

poco(text="发现").click()

poco(textMatches="^小程序.*").click()

poco(text="最近使用").parent().parent().parent().offspring(text="云访客之测试").click()

注意事项:

1. 此示例中初始化poco对象时需实例化的类为AndroidUiautomationPoco. 更多参考请点击这里

2. 查看UI元素的属性及元素的层级关系需要通过airtest-IDE工具来辅助完成

3. 目前在pocoui中推荐的定位方式有两种, 一种是通过属性来定位(支持模糊匹配), 一种是通过层级关系来定位.

1.2.4 基于图像识别的定位操作

#-*- coding: utf-8 -*-#@Author : chinablue

from airtest.core.api importconnect_device, start_app, touch, Template

device_ip= "127.0.0.1"device_port= "5037"device_uuid= "3f9d6008" #通过[adb devices]来获取

#连接设备

d = connect_device(f"Android://{device_ip}:{device_port}/{device_uuid}?cap_method=JAVACAP")#点击[home]键

d.home()#打开app

start_app(package="com.tencent.mm") #app包名获取命令: adb shell dumpsys window windows|findstr "mCurrentFocus"

#点击[发现], 通过Airtest-IDE来截取目标图片

touch(Template(filename="wechat_discover.png"))

注意事项:

1. wechat_discover.png在这里下载 :

2. 通过airtest-IDE工具完成截图后, 需要去对应工作目录中将png格式的图片拷贝到测试脚本中

二. UI自动化测试中的PO模式

2.1 如何理解PO模式

1) PO是Page Object的缩写, PO模式体现了分层设计的思想

2) PO的优点: 提高代码的可读性,提高代码的可维护性,提高代码的复用性

3) 主要想解决的问题: 测试用例不会因某个元素定位发生变化而去修改所有相关的测试用例

4) PO模式是将每个页面映射成class类,通过这个类来维护当前页面元素(映射成类对象属性)和页面操作(映射成类方法)

5) 结合PO模式, 对测试脚本的逻辑分层设计:

定位信息层: 填写元素信息或图片信息

基本操作层: 定义页面元素的基本操作

业务场景层: 将页面的基本操作组装成一个个用例步骤

测试用例层: 编写测试用例

2.2 Page层的设计思路

#-*- coding:utf-8 -*-#Author:chinablue

importloggingimportallurefrom bns.pages.base_page importBasePage#元素操作封装

classHandle(BasePage):"""对页面操作的基础封装"""

def __init__(self, driver):

super().__init__(driver)

self.logger= logging.getLogger(__name__)#业务场景封装

classBusiness(Handle):"""对单个测试步骤的封装"""

def __init__(self, driver):

super().__init__(driver)

@allure.step("断言: 页面关键信息检查")defis_current_page(self):pass #页面关键信息的断言

#元素信息管理:Android

classAndroidLocator(Business):def __init__(self, driver):

super().__init__(driver)

self.poco_locator()

self.airtest_locator()defpoco_locator(self):pass

defairtest_locator(self):pass

注意事项:

1. BasePage类会根据定义的属性来动态绑定元素操作方法, 目前可特殊识别的属性有: a_*,  p_*,  image_*

2. 每个page页会定义有继承关系的3个类: Handle类, Business类, AndroidLocator类

3. 对于一些非重点测试的page页, 可以和其他page页进行适当合并

4. AndroidLocator类中支持poco定位和图像识别定位, 但无论采用哪一种定位方式,属性命名要有意义

5. Business类中需要复写is_current_page方法, 该方法会对当前页面特征进行断言

更为详细的例子请参考这里

三. UI自动化框架介绍

动态查找页面, 通过属性的方式来获取page的实例化对象

使用pytest组织测试用例, allure.step对用例进行分层

3.1 项目结构介绍

|-base #基础层

|-bns #业务层: 基于PO模式设计

|-pages     #每个页面定义成一个py文件, 每个py文件中有3个类

|-screenshots  #截图定位的图片

|-init_app.py  #设备连接, poco初始化操作

|-testcase #用例层: 主要调用用例步骤,进行页面断言

|-config.py #配置文件: 支持在运行过程中通过set方式来修改配置文件,方便在持续集成场景的使用

|-main.py #执行入口

3.2 编写第一个用例, 分析代码之间的调用关系

android微信小程序自动填表_微信小程序自动化实战(一)相关推荐

  1. android微信小程序自动填表_微信“填表”类小程序,你可能根本没用对

    ​​"填表"功能不是微信原生的,但在企业微信中却是群内自带功能,这个功能很方便的实现了群内成员共同填写一张表格的工作,无需下载和上传,无需收集汇总,只需要自己把自己的信息填好就行, ...

  2. android微信小程序自动填表_微信小程序自动化,记录趟过的坑!

    项目思想:关键字+数据驱动混合测试 基于Android-微信小程序自动化的关键是:webview的切换 对于微信App来说如何从NATIVE切换到webview的过程 测试版本信息 1.微信版本:7. ...

  3. android微信小程序自动填表_微信小程序自动回复用户消息

    最近用java做了一个实现在微信小程序内根据用户发送的消息内容回复用不通的消息功能,相当于一个自动回复的客服消息,效果图如下: ​​ ​ 当用户在小程序输入框中输入内容或其他操作时,后台根据用户输入的 ...

  4. java程序自动重启_让Java程序自动重启的实现方法(推荐)

    要让一个java程序自动重启还真不容易的,重启分两步,首先是结束程序,这个简单,只要运行System.exit()就可以了.然后是启动,这个就难了,这个时候程序都已经结束了,就像一个人死了就不可能再自 ...

  5. 微信6.6自动抢红包防撤回小程序

    过年很多微信群都有很多红包,开着挂估计能抢个几百. 微信6.6自动抢红包防撤回小程序

  6. 小程序文本框为空自动填写_微信免费转码机器人!小程序自动转码!

    ♥ 小程序转码机器人 微信免费转码机器人主要用于小程序转换成二维码! 此机器人24小时全自动转码永久免费! 大家可以放心使用! 前言:因为小程序不能分享到除了微信以外的应用,在某些小程序活动出现邀请时 ...

  7. 微信小程序python自动化测试_微信小程序的自动化测试框架

    微信小程序的自动化测试框架 微信发布了小程序的自动化测试框架Minium,提供了多种运行验证方式,其特点: 支持一套脚本,iOS & Android & 模拟器,三端运行 提供丰富的页 ...

  8. 快手小店电脑版_微信PC版更新!支持在小程序中使用微信支付 | 一周资讯

    小程序1. 微信PC版更新,支持在小程序中使用微信支付.12月19日,微信PC端推出内测版2.7.2.73,新版本支持以下新功能:新增看一看精选内容,新的订阅号浏览体验,支持在小程序中使用微信支付.( ...

  9. 微信小程序 python 自动化测试_微信小程序的自动化测试框架

    微信小程序的自动化测试框架 微信发布了小程序的自动化测试框架Minium,提供了多种运行验证方式,其特点: 支持一套脚本,iOS & Android & 模拟器,三端运行 提供丰富的页 ...

最新文章

  1. springboot +security +mybatis+thymeleaf 实现简单的用户 角色 权限(资源) 管理
  2. 股市币市:数据分析与交易所最新公告(20190303)
  3. web.py搭建服务器
  4. JAVA实现顺时针打印矩阵问题(《剑指offer》)
  5. std::ostringstream::str()返回临时对象
  6. DL之SPP-Net:SPP-Net算法的简介(论文介绍)、架构详解、案例应用等配图集合之详细攻略
  7. [OpenS-CAD]屏幕坐标转换分析
  8. html页面小宠物代码大全,宠物店网页设计html代码
  9. DHT11温湿度传感器
  10. 杰理之录音详细流程框图【篇】
  11. 大疆推出Avata无人机以及飞行眼镜Goggles 2
  12. 如何查看电脑mac地址
  13. 二值化神经网络(BNN)综述
  14. [高数][高昆轮][高等数学上][第一章-函数与极限]04.无穷小与无穷大
  15. matlab 相关性分析 相关系数地图生成
  16. MySQL 基础入门_04SQL基础
  17. http 4xx,5xx Server error
  18. 三种anti-TNF制剂生物学剂量增加、非生物制剂和类固醇强化作用的差异:来自临床实践的证据...
  19. 企业为何要建设工业互联网标识解析节点?
  20. win10玩cf不能全屏_如何优化Win10游戏流畅运行?Win10游戏流畅运行优化教程

热门文章

  1. 2022-2028全球房地产众筹平台行业调研及趋势分析报告
  2. 【我的世界】自定义局域网服务器-LanServerPropertie-1.17.x-自定义端口+关正版验证
  3. Flex弹性盒子(一篇带你掌握潮流 Flex 布局)
  4. Web简易时间轴制作(超详细)
  5. 已解决:ERROR com.rabbitmq.client.impl.ForgivingExceptionHandler - An unexpected connection driver error
  6. “浙大学霸作息表”疯传,网友:越优秀就越努力!
  7. Java面试题:单核CPU支持多线程吗?
  8. 三重积分平均值_二重积分或者三重积分里面如果积分区域关于坐标轴对称比如积分区域是一个圆或者球,就只用求第一象限或卦...
  9. 记录下公司刻录新版本/repo_kitkat 命令
  10. Linux 访问superio 寄存器,ITE Super IO 学习 - GPIO