FAutoTest一个 H5、小程序自动化测试框架

发布时间:2020-08-05 10:49:11 作者:testingbang
来源:ITPUB博客 阅读:177

简介

随着产品业务形态逐渐从 App 延升到微信小程序、微信公众号以及 QQ公众号等,而之前的自动化建设主要是 Native App 为主,全手工测试已无法满足快速增长的业务需求。为提升测试效率和质量,FAutoTest 框架致力于解决 QQ、微信内 UI 的自动化问题(包括微信内 H5页面和小程序、QQ 内 H5页面),提升自动化测试的效率和稳定性。

FAutoTest 是一款成长中的框架,吸收借鉴了一些 UI 自动化工具的优秀设计理念和思想。如果框架有不足地方,或者你有更好的建议,欢迎提交 Issues 参与贡献。

特性

FAutoTest 专业服务于微信 H5/小程序的UI自动化测试,提升测试效率与质量。

架构

  1. 整体采用分层设计,API设计方式参考 WebDriver

  2. 整体框架是一个同步阻塞的模型:在一个线程中循环的执行 receive 方法,等待收到 response,发送消息后,阻塞,只有当 receive 方法获得消息时,才会解除阻塞,发送下一条消息,具备超时异常处理机制

  3. 框架内打包了 Python 版本的 UIAutomator,方便在安卓 Native 页面进行操作

FAutoTest一个 H5、小程序自动化测试框架

User Interface(用户交互层):  提供给用户所有的界面操作 API(H5界面及小程序界面),使用者不需要关注框架内部实现,只需要关注自身业务逻辑流程(手工用例流程转换成自动化流程)

PageOperator(操作解析层):  主要用于接收和解析用户命令后传递给下层 Engine 层

Engine( H5&小程序引擎层):  将用户命令传输到手机,并返回结果信息。封装 WebSocket 和单线程池,通过WebSocket Debug URL 和浏览器内核建立链接,发送 Json 格式的协议到手机端进行用户指定的操作。

业务流程

依赖软件环境

软件 软件要求
Python 版本 2.7.x 版本
Java JDK 版本 Java 语言框架(最低1.7)
Android SDK 版本 4.4 及以上版本
adb 版本 最新版本即可
Python IDE 开发环境 如 PyCharm CE等
1. Python 版本安装

下载 & 安装  Python ,安装后在终端输入命令 python -v 和 pip list,能够执行,说明 Python 环境配置成功。

2. Java JDK 版本安装

下载 & 安装  Java JDK  安装后在终端输入命令java -version,java, javac命令能够执行,则 Java 环境配置成功。

3. Android SDK 版本安装

下载 & 安装  Android Studio ,然后在里面安装 Android SDK

4. 配置 adb 环境

安装 Android Studio 后,配置 SDK 环境(若自动安装不成功,可到 手动下载安装  ,安装后在终端输入命令 adb version 执行有结果,则说明配置成功

5. IDE 安装

下载 & 安装  Pycharm CE

FAutoTest 开发环境安装

库名称 版本 下载地址
uiautomator 0.3.2 https://pypi.org/project/uiautomator/#files
lxml 4.2.3 https://pypi.org/project/lxml/4.2.3/#files
bidict 0.17.0 https://pypi.org/project/bidict/#files
websocket-client 0.44.0 https://pypi.org/project/websocket-client/#files

使用方式

如何写测试案例,如微信 H5页面,如下所示:

# coding=utf-8 from fastAutoTest.core.h6.h6Engine import H5Driver # http://h6.baike.qq.com/mobile/enter.html 从微信进入此链接,首屏加载完后执行脚本 if __name__ == '__main__':
    h6Driver = H5Driver()
    h6Driver.initDriver()
    h6Driver.clickElementByXpath('/html/body/div[1]/div/div[3]/p')
    h6Driver.clickFirstElementByText('白内障')
    h6Driver.returnLastPage()
    h6Driver.returnLastPage() print(h6Driver.getElementTextByXpath('/html/body/div[1]/div/div[3]/p'))
    h6Driver.close()
  1. 从微信初始化 H5页面,如进入  http://h6.baike.qq.com/mobile/enter.html
  2. 进入页面后找到需要操作的控件的xpath,可通过 chrome:inspect 找到当前页面,找到控件的xpath
  3. 初始化框架并进行 API 调用,如执行点击控件等
  4. 关闭框架,执行用例

QQ 的 H5页面:

# coding=utf-8 from fastAutoTest.core.qq.qqEngine import QQDriver # 从动态 -> 动漫进入 if __name__ == '__main__':
    qqDriver = QQDriver()
    qqDriver.initDriver()
    qqDriver.clickFirstElementByText('英雄救美,这也太浪漫了')
    qqDriver.returnLastPage()
    qqDriver.clickElementByXpath('//*[@id="app"]/div/ul/li[2]')
    qqDriver.returnLastPage()
    qqDriver.close()
  1. 从 QQ 动态,进入动漫 H5页面
  2. 找到需操作的控件的xpath,可通过 chrome:inspect 找到当前页面,找到控件的xpath
  3. 初始化框架并进行相关 API 调用
  4. 关闭框架,执行用例

微信小程序:

# coding=utf-8 from fastAutoTest.core.wx.wxEngine import WxDriver import os # 进入企鹅医典小程序 if __name__ == '__main__':
    wxDriver = WxDriver()
    wxDriver.initDriver() # 点击全部疾病 wxDriver.clickElementByXpath('/html/body/div[1]/div/div[3]/p')
    wxDriver.clickFirstElementByText('白内障')
    wxDriver.returnLastPage()
    wxDriver.returnLastPage() # 截图 dirPath = os.path.split(os.path.realpath(__file__))[0] PIC_SRC = os.path.join(dirPath, 'pic.png')
    wxDriver.d.screenshot(PIC_SRC)
    wxDriver.close()
  1. 搜索小程序,如企鹅医典小程序,进入小程序页面
  2. 同样找控件的xpath,同上操作
  3. 初始化框架,进行相关 API 调用
  4. 关闭框架,执行用例


推荐阅读:
  1. 怎么部署一个nuxt.js项目
  2. 怎么在Python中实现一个http接口自动化测试框架

免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。

fautotest h5 一个

上一篇:phpcms有什么意思

下一篇:如何解决phpcms采集内容乱码的问题

相关阅读

您好,登录后才能下订单哦!

密码登录
登录注册
其他方式登录
点击 登录注册 即表示同意《亿速云用户服务条款》