找回密码
 立即注册
Qt开源社区 门户 查看内容

Qt应用自动化系列教程-01快速入门

2019-2-9 10:10| 发布者: admin| 查看: 766| 评论: 0

摘要: 作者:聆播微布 Qt简介Qt 是一个跨平台应用程序和 UI 开发框架。使用 Qt 您只需一次性开发应用程序,无须重新编写源代码,便可跨不同桌面和嵌入式操作系统部署这些应用程序。Qt 支持在Windows,Linux等平台运行,以 ...
作者:聆播微布




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   本次测试对象为Qt V4.8.6 版本自带的demo程序。

  • 安装 LeanRunner Lite Windows 桌面应用自动化工具 (应用商店地址:https://www.microsoft.com/store/productId/9PDRR6ZL2PBQ)


使用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文档。


  1. 在模型管理器中选择【复制模型代码到剪贴板】





将复制的代码粘贴到script1.js文件中。
const{ TestModel }=require("leanrunner");

var model = TestModel.loadModel("E:\\qtdemo\\model1.tmodel");

(asyncfunction(){    //// Paste code here /////

})();

  1. 我们要模拟点击add按钮的操作,在模型管理器中,选中add 节点,控件操作栏选择click 方法,点击【复制方法到剪贴板】
const{ TestModel }=require("leanrunner");

var model = TestModel.loadModel("E:\\qtdemo\\model1.tmodel");

(asyncfunction(){    //// Paste code here /////    await model.getButton("Add").click(0,0,1);
})


最终代码:
const{ TestModel, Util }=require("leanrunner");

var model = TestModel.loadModel("E:\\qtdemo\\model1.tmodel");

(asyncfunction(){    //// Paste code here /////    await model.getButton("Add").click(0,0,1);    await model.getEdit("Edit").pressKeys("sam");    await model.getEdit("Edit2").set('china');    await model.getButton("OK").click(0,0,1);

})();



上面的代码中await关键字是在异步操作中使用的,因为LeanRunner中所有对控件的操作都是异步调用,所以要加这个关键字。

6. 运行代码

保存文件,点击【运行脚本】按钮,即可运行当前代码。可以看到鼠标会自动点击 address book 中的 【add】按钮。



总结:

通过上面的实例,我们可以快速上手构建Windows 应用程序的自动化。此教程为系列教程,会在后面的教程中详细为大家介绍一些Qt复杂控件的自动化技巧以及LeanRunner的高级功能。敬请期待。。。

相关内容:爱码哥 Android自动化测试解决方案
构建行为驱动的iOS自动化测试
RPA - 机器人流程自动化知多少?
为什么自动化测试是必要的?
Android: 通过自然语言驱动monkey做稳定性测试



聆播科技提供软件自动化方面的专业产品及服务,帮助您实现公司测试业务的及软件操作的自动化。欢迎联系我们,咨询商务合作事宜。


快,关注这个公众号,一起涨姿势~





也可以加QQ群:707467292  进行node.js自动化相关技术交流。





-------------------------------------------------------------------------
我们尊重原创,也注重分享,如若侵权请联系qter@qter.org。
-------------------------------------------------------------------------

鲜花

握手

雷人

路过

鸡蛋

公告
可以关注我们的微信公众号yafeilinux_friends获取最新动态,或者加入QQ会员群进行交流:190741849、186601429(已满) 我知道了