AWTK UI 自动化测试工具发布

这篇具有很好参考价值的文章主要介绍了AWTK UI 自动化测试工具发布。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

AWTK UI 自动化 提供了兼容 Appium 的接口,可以使用 Appium 的工具来进行 UI 自动化测试。但是使用起来有点麻烦,用的人不多,所以最终决定开发一个 AWTK 专用的 UI 自动化测试工具。相比 Appium,这个工具有下列特点:

  • 不依赖额外的库。
  • 无需安装额外的软件。
  • 无需学习额外的编程语言和 API。
  • 支持串口和网络两种方式连接 APP。
  • 更加适合 AWTK 的测试方式。

主要用途:

  • 自动化测试。
  • 自动化演示。
  • 压力测试。
  • 查看系统状态(辅助调试)。

1. 启用 UI 自动化

  • 包含头文件
#include "remote_ui/service/remote_ui_service.h"
  • 启动服务
  tk_service_start(main_loop_get_event_source_manager(main_loop()), REMOTE_UI_URL, remote_ui_service_create, NULL);

完整示例请参考 demo_ui_old_app.c

2. 编写测试配置

测试用 ini 文件格式编写。通常一个应用程序需要多组测试用例,每个测试用例放到一个配置文件中,并取一个有意义的文件名。

下面给出一个简单的例子,后面会详细介绍每个命令的含义。

[create]
  url=tcp://localhost:2233

[move_widget]
  target=window_manager.top
  x=100
  y=200

[get_prop]
  target=window_manager.top
  name=x
  value=100

[get_prop]
  target=window_manager.top
  name=y
  value=200

[resize_widget]
  target=window_manager.top
  w=200
  h=100

[get_prop]
  target=window_manager.top
  name=w
  value=200

[get_prop]
  target=window_manager.top
  name=h
  value=100

[close_window]
  name=top

3. 运行测试

  • 先启动被测试的应用程序。如
./bin/demouiold 
  • 再运行测试程序。如
./bin/ui_test tests/ui_test_data/demouiold/overlay.ini

如果存在多组测试用例,可以把它们放到一个批处理中。

4. 测试命令

4.0 常用参数

部分参数在很多命令中都会出现,这里统一说明。

4.0.1 target

通常用来指定被操作的控件。它的值可以是控件的名字,也可以是控件的路径。如果是控件的路径,可以使用 . 来分隔控件的名字。如 window_manager.top

有几个特殊的名称:

  • window_manager 代表窗口管理器。
  • window 代表当前主窗口。比如 window.close 表示当前窗口上名为 close 的控件。路径默认为当前窗口,比如 close 也表示当前窗口上名为 close 的控件。
  • global 代表全局对象。用来设置语言和主题之类的全局属性。
  • [序数] 表示第几个子控件。如果序数为非负表示正向序数,为负数表示反向序数。
  • 如果按名称查找失败,将名字作为控件类型进行查找。

示例:文章来源地址https://www.toymoban.com/news/detail-771973.html

  • close_button 表示名为 close_button 的控件。
  • window_manager.top 表示 window_manager 窗口中名为 top 的窗口。
  • window_manager.top.close_button 表示 window_manager 窗口中,名为 top 的窗口中名为 close_button 的控件。
  • window.[0] 表示当前窗口中第一个控件。
  • window.[-1] 表示当前窗口中倒数第一个控件。
  • window.slide_view,如果窗口中存在名为 slide_view 的控件,则表示该控件,否则表示窗口中第一个 slide_view 类型的控件。

4.1 create

  • 功能:创建连接。

  • 参数:

    • url - 连接地址,如 tcp://localhost:2233。
  • 示例:

[create]
  url=tcp://localhost:2233

url 参数可以为串口名,通过串口连接到开发板。如:serial:///dev/ttyUSB0

4.2 take_snapshot

  • 功能:截屏。如果指定的文件不存在,则将截屏保存为指定的文件。如果存在,则与之进行比较,如果不一致,则提示测试失败。

  • 参数:

    • target - 目标。
    • filename - 截屏文件名 (.png)。
  • 示例:

[take_snapshot]
  filename=win1.png

[take_snapshot]
  target=window
  filename=win2.png

[take_snapshot]
  target=window_manager
  filename=wm.png

[take_snapshot]
  target=window_manager.top
  filename=top.png

4.2 get_source

  • 功能:获取控件源码。如果指定的文件不存在,则将源码保存为指定的文件。如果存在,则与之进行比较,如果不一致,则提示测试失败。

  • 参数:

    • target - 目标。
    • filename - 源码文件名 (.xml)。
  • 示例:

[get_source]
  filename=win1.xml

[get_source]
  target=window
  filename=win2.xml

[get_source]
  target=window_manager
  filename=wm.xml

[get_source]
  target=window_manager.top
  filename=top.xml

4.3 open_window

功能:打开窗口。
参数:

  • name - 窗口名。
  • xml - xml 文件(可选,以@开头表示从文件读取),如果指定,表示从 XML 内容加载窗口,通常不需要。
  • init - 初始化数据 (JSON 格式,可选,以@开头表示从文件读取)。
[open_window]
  name=basic

[open_window]
  name=foo
  xml=@tests/ui_test_data/demouiold/data/foo.xml
  init=@tests/ui_test_data/demouiold/data/foo.json

xml 文件可以用 AWTK designer 生成,也可以手工编写。

初始化数据,第一级为控件名称(路径),第二级为控件的属性和值。如:

{
  "bar1": {
    "value":50
  },  
  "bar2": {
    "value":80
  }
}

在上面的例子中,bar1 和 bar2 是窗口中的两个进度条控件,这里分别设置它们的值为 50 和 80。

4.4 close_window

功能:关闭窗口。

参数:

  • name - 窗口名。
[close_window]
  name=top

4.5 back

功能:关闭当前窗口,返回上一级窗口。

参数:无。

[back]

4.6 home

功能:关闭除主窗口外的窗口,返回主窗口。

参数:无。

[home]

4.7 exec_fscript

功能:执行脚本。

参数:

  • fscript - 脚本内容(以@开头表示从文件读取)。

示例:

[exec_fscript]
  fscript=print("hello");

fscript 的用法请参考 FSCRIPT 参考文档

4.8 create_widget

功能:创建控件。

参数:

  • target - 目标(父控件)。
  • xml - xml 内容(以@开头表示从文件读取)。

示例:

[create_widget]
  target=window
  xml=@tests/ui_test_data/demouiold/data/quit.xml

控件的 xml 比较简单,一般手写就可以了。如下面的例子在窗口的中间创建一个按钮:

<button name="quit" text="Quit" on:click="quit()" x="c" y="m" w="128" h="30"/>

4.9 destroy_widget

功能:销毁控件。

参数:

  • target - 目标控件。

示例:

[destroy_widget]
  target=quit

4.10 move_widget

功能:移动控件。

参数:

  • target - 目标控件。
  • x - x 坐标。
  • y - y 坐标。

示例:

[move_widget]
  target=window_manager.top
  x=100
  y=200

x 和 y 的值为相对于父控件的坐标。

4.11 resize_widget

功能:调整控件大小。

参数:

  • target - 目标控件。
  • w - 宽度。
  • h - 高度。

示例:

[resize_widget]
  target=window_manager.top
  w=200
  h=100

4.12 set_prop

功能:设置对象(通常为控件)的属性。

参数:

  • target - 目标控件(或 global 全局对象)。
  • name - 属性名。
  • value - 属性值。

示例:

设置是否显示 FPS

[set_prop]
  target=window_manager
  name=show_fps
  value=false

设置屏保时间 (ms)

[set_prop]
  target=window_manager
  name=screen_saver_time
  value=1000000

设置语言

[set_prop]
  target=global
  name=language
  value=zh_CN

设置主题

[set_prop]
  target=global
  name=theme
  value=default

4.13 get_prop

功能:获取对象(通常为控件)的属性。

参数:

  • target - 目标控件(或 global 全局对象)。
  • name - 属性名。
  • value - 属性值(预期的值,如果实际值与之不同,认为测试失败)。

示例:

获取控件的文本

[get_prop]
  target=button
  name=text
  value=按钮

获取当前的语言

[get_prop]
  target=global
  name=language
  value=zh_CN

4.14 click

功能:点击控件(只支持按钮等可以点击的控件)。

参数:

  • target - 目标。
[click]
  target=start

4.15 key

功能:发送按键事件。

参数:

  • target - 目标。
  • key - 按键。
[key]
  target=open_edit
  key=RETURN

key 的取值请参考(去掉前缀 TK_KEY_) [按键定义] https://gitee.com/zlgopen/awtk/blob/master/docs/manual/key_code_t.md

4.16 send_event

功能:发送事件。

参数:

  • target - 目标。

  • type - 事件类型。

    • key_down - 按键按下。
    • key_up - 按键弹起。
    • pointer_down - 指针按下。
    • pointer_up - 指针弹起。
    • pointer_move - 指针移动。
    • click - 点击。
  • x - x 坐标 (pointer 事件)。

  • y - y 坐标 (pointer 事件)。

  • key - key (key 事件)。

[send_event]
  type=key_down
  key=RIGHT

[send_event]
  type=key_up
  key=RIGHT

[send_event]
  target=window
  type=pointer_down
  x = 100
  y = 300

[send_event]
  target=window
  type=pointer_move
  x = 101
  y = 301

[send_event]
  target=window
  type=pointer_up
  x = 100
  y = 300

4.17 sleep

功能:休眠。

参数:

  • ms - 等待时间(毫秒)。

```ini
[sleep]
  time=1000

4.18 get_loaded_images_info

功能:获取已经加载的图片信息(辅助内存相关的调试)。

参数:

  • filename - 保存文件名。

示例:

[get_loaded_images_info]
  filename=loaded_image_info.txt

4.19 get_loaded_assets_info

功能:获取已经加载的资源信息(辅助内存相关的调试)。

参数:

  • filename - 保存文件名。

示例:

[get_loaded_assets_info]
  filename=loaded_assets_info.txt  
  • 参考示例

到了这里,关于AWTK UI 自动化测试工具发布的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 基于web应用的UI自动化、跨浏览器测试、测试结果分析:Selenium 开源的自动化测试工具基础教程

    作者:禅与计算机程序设计艺术 Selenium是一个开源的自动化测试工具,它提供了基于web应用的UI自动化、跨浏览器测试、测试结果分析等功能。它提供的功能包括:自动化控制浏览器、操纵表单、点击链接及按钮、验证页面元素、执行JavaScript代码、生成PDF文件、模拟移动设备

    2024年02月09日
    浏览(46)
  • Selenium——基于Web的UI自动化测试工具(一)

            Selenium是一个自动化测试工具,用于模拟用户在Web上的行为。它支持多种浏览器,如Chrome、Firefox、IE等。Selenium可以实现多种操作,包括打开浏览器、导航到指定URL、填写表单、点击按钮、获取页面元素等。         Selenium有多种语言实现,包括Java、Python、C#等

    2024年04月13日
    浏览(47)
  • 比selenium体验更好的ui自动化测试工具: cypress介绍

    话说 Cypress is a next generation front end testing tool built for the modern web. And Cypress can test anything that runs in a browser.Cypress consists of a free, open source, locally installed Test Runner and a Dashboard Service for recording your tests. 吹的挺好哈,那咱也来尝试玩玩,试试,哈哈! 1、在Windows 7以上的环境中,可

    2024年01月16日
    浏览(45)
  • UI自动化测试之selenium工具(浏览器窗口的切换)

    1、在浏览网页的时候,有时点击一个链接或者按钮,会弹出一个新的窗口。这类窗口也被称之为句柄(一个浏览器窗口的唯一标识符,通过句柄实现不同浏览器窗口之间的切换),在我们手动控制浏览器的时候,产生新的句柄时浏览器会自动的帮我们跳转到最新的句柄处(鼠

    2024年02月02日
    浏览(47)
  • NO.3 robot framework编辑工具RIDE简单使用、RIDE快捷键介绍及创建一个简单的UI自动化测试用例

    一、Ride简单使用及快捷键 1.启动ride 启动ride方法: 1) 通过界面图标 2) dos命令行:进入dos窗口,输入ride.py,按回车即可 2.创建新工程 快捷键:ctrl+n 3.创建测试套(suite)快捷键:ctrl+shift+f 4.保存工程 快捷键:ctrl+shift+s(保存整个工程),ctrl+s(局部保存,只保存鼠标点击的

    2024年01月17日
    浏览(46)
  • 自动化测试及典型开源的自动化测试工具

    目录 前言: 自动化测试 自动化测试的意义 手工测试的局限性 自动化测试带来的好处 自动化测试的前提条件 自动化测试的方法 自动化测试的不足 自动化测试的应用方向 典型开源的自动化测试工具 自动化测试是一种使用软件工具和脚本来执行测试任务的方法,以取代手动

    2024年02月13日
    浏览(69)
  • python自动化测试- 自动化框架及工具

    手续的关于测试的方法论,都是建立在之前的文章里面提到的观点: 功能测试不建议做自动化 接口测试性价比最高 接口测试可以做自动化 后面所谈到的  测试自动化  也将围绕着  接口自动化  来介绍。 本系列选择的测试语言是 python 脚本语言。由于其官方文档已经对原理

    2024年02月22日
    浏览(63)
  • 自动化的测试工具

    1,  自动化功能测试工具:QTP、selenium  2,  自动化性能测试功能:LoadRunner、jmeter  3,  自动化接口测试工具:Charles、soapUI、LoadRunner、jmeter、postman、  测试工具  4,  测试管理工具:禅道、qc、jira、testlink  管理需求,管理测试计划、管理测试用例、管理bug、分析bu

    2024年02月08日
    浏览(49)
  • 自动化测试基础知识:什么是自动化测试?需要学习哪些知识与工具!

    1、自动化测试概念 自动化测试是把以人为驱动的测试行为转化为机器执行的一种过程。通常, 在设计了测试用例并通过评审之后,由测 试人员根据测试用例中描述的规程一步步执行测试,得到实际结果与期望结果的比较。简言之,自动化测试就是让被测试的软件自己运行起

    2024年02月04日
    浏览(63)
  • 【测试开发】第五节.测试——自动化测试(Selenium工具)

    作者简介:大家好,我是未央; 博客首页:未央.303 系列专栏:Java测试开发 每日一句: 人的一生,可以有所作为的时机只有一次,那就是现在!!! 前言 一、自动化测试的概念以及分类 二、Selenium—web自动化测试工具 2.1 自动化测试的一些前置工作 2.2 第一个自动化实例

    2024年02月04日
    浏览(62)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包