作者:聆播微布 Qt简介Qt 是一个跨平台应用程序和 UI 开发框架。使用 Qt 您只需一次性开发应用程序,无须重新编写源代码,便可跨不同桌面和嵌入式操作系统部署这些应用程序。 Qt 支持在Windows,Linux等平台运行,以及包括多达 250 个以上的 C++ 类,同时支持 2D/3D 图形渲染,支持 OpenGL等优异的特性,很多企业会选择使用Qt开发桌面客户端。 下面是Qt的演示样例,里面包含丰富的样例小程序。 由于它的跨平台特点,它的控件实现有自己独特性。自动化测试是一个挑战。有些用户选择在Windows上做自动化,其它平台再手动验证主要场景。本次教程以Windows上面Qt 桌面端为例,讲解如何自动化基于Qt 的Windows桌面应用程序。 桌面端自动化简介桌面应用自动化从大的类别分主要有两种方式,一种是对象识别,一种是图像识别。对象识别可以通过控件的一些属性特点精准的识别控件,包括它的子控件。图像识别则通过图像匹配,或OCR的方式找到控件,做相应的操作。 图像识别因为识别精度的问题,况且容易受分辨率或其它系统设置的影响,一直无法100%精确定位和操作,一般作为对象识别的辅助手段。 LeanRunner作为使用对象识别方式的自动化工具,能够比较精准的操作控件,特别是Windows复杂控件,如TreeView、ListView、DataGrid等,还能够对它们中间的子控件做相应的操作。此外它能支持多种编程语言,包括Node.js、VBScript、JavaScript (WScript)和C#等,除此之外还能够通过图片自定义虚拟控件。 在这里,主要使用LeanRunner Lite,即LeanRunner 的简化版,它支持Node.js开发脚本,能够在Windows 应用商店自由下载。更多信息可参见相关文档:http://www.leanpro.cn/docs/leanrunner/zh-cn/。 LeanRunner简介 一个LeanRunner自动化脚本由两部份组成:对象模型库和脚本部分。对象模型库存储被测应用界面上的控件识别信息,它还保留了控件层级的信息。 下图为LeanRunner 的模型管理器: 使用模型管理器可以方便的识别各类Windows 桌面端应用控件。 下图为 LeanRunner脚本编辑界面,它可以编辑Node.js、VBScript、JavaScript(WScript)等语言脚本。C#脚本需要在Visual Studio中开发。LeanRunner也提供了Visual Studio的集成。 与模型管理文件结合使用,调用相关的操作API,即可进行UI的自动化。 当被测应用更新时,主要更新对象模型就可以了,提高了脚本的可维护性。 下面可以通过具体的一个操作来熟悉桌面应用自动化的使用方法。 实例操作1. 前提准备
使用Qt自带的Adrress Book应用,模拟添加一个联系人操作,快速入门Qt桌面应用自动化。 2. 准备被测样例打开Qt Demo中的Item Views--Address Book 样例,点击【add】按钮,弹出添加联系人窗口,输入联系人信息即可添加新的联系人。 下面就上述场景实现自动化: 3. 新建项目打开LeanRunner, 选择【文件】--【新建项目】 填写相应的【项目名】和【项目路径】,点击创建按钮。 默认软件界面如下: 项目已经帮你生成了空的脚本和模型文件。 4. 操作模型点击 model1.tmodel 文件,打开模型管理器窗口。点击【添加对象】按钮,选择 address book中的add按钮: 弹出添加对象对话框。选择【添加】,添加成功后,保存文件。 将add 按钮的元素模型添加到模型文件中。 在模型管理器中选中对应节点,在元素操作界面选择对应操作,点击【复制方法代码到剪贴板】 按照如上操作,可以定位到“新建联系人”窗口中的 【name】,【address】对象。 在定位【name】,【address】控件的时候,由于它们都是Edit类型控件,且其它识别属性都相同。在自动化时会被认为是同一控件。为了区分,在添加对象到模型后,需要为此元素手动添加一个index属性。 添加方式为选择【Edit】节点,【识别控件】点击【添加属性】按钮: 同样为 address 控件以同样方式添加 index属性并设置值为1: 最终对象如下: 5. 编辑代码打开LeanRunner代码编辑 script1.js 文件: 作为node.js代码,LeanRunner使用了async/await语法。不了解的同学可以参考一下node.js文档。
将复制的代码粘贴到script1.js文件中。 const{ TestModel }=require("leanrunner");
const{ TestModel }=require("leanrunner"); 最终代码: const{ TestModel, Util }=require("leanrunner"); 上面的代码中await关键字是在异步操作中使用的,因为LeanRunner中所有对控件的操作都是异步调用,所以要加这个关键字。 6. 运行代码 保存文件,点击【运行脚本】按钮,即可运行当前代码。可以看到鼠标会自动点击 address book 中的 【add】按钮。 总结: 通过上面的实例,我们可以快速上手构建Windows 应用程序的自动化。此教程为系列教程,会在后面的教程中详细为大家介绍一些Qt复杂控件的自动化技巧以及LeanRunner的高级功能。敬请期待。。。 构建行为驱动的iOS自动化测试 RPA - 机器人流程自动化知多少? 为什么自动化测试是必要的? Android: 通过自然语言驱动monkey做稳定性测试 聆播科技提供软件自动化方面的专业产品及服务,帮助您实现公司测试业务的及软件操作的自动化。欢迎联系我们,咨询商务合作事宜。 快,关注这个公众号,一起涨姿势~ 也可以加QQ群:707467292 进行node.js自动化相关技术交流。 ------------------------------------------------------------------------- 我们尊重原创,也注重分享,如若侵权请联系qter@qter.org。 ------------------------------------------------------------------------- |