博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Qt应用自动化系列教程-01快速入门
阅读量:5967 次
发布时间:2019-06-19

本文共 3007 字,大约阅读时间需要 10 分钟。

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 应用商店自由下载。更多信息可参见相关文档:。

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 桌面应用自动化工具 (应用商店地址:)

使用Qt自带的Adrress Book应用,模拟添加一个联系人操作,快速入门Qt桌面应用自动化。

  1. 准备被测样例 打开Qt Demo中的Item Views--Address Book 样例,点击【add】按钮,弹出添加联系人窗口,输入联系人信息即可添加新的联系人。

下面就上述场景实现自动化:

  1. 新建项目

打开LeanRunner, 选择【文件】--【新建项目】

填写相应的【项目名】和【项目路径】,点击创建按钮。

默认软件界面如下:

项目已经帮你生成了空的脚本和模型文件。

  1. 操作模型 点击 model1.tmodel 文件,打开模型管理器窗口。点击【添加对象】按钮,选择 address book中的add按钮:

弹出添加对象对话框。选择【添加】,添加成功后,保存文件。

将add 按钮的元素模型添加到模型文件中。

在模型管理器中选中对应节点,在元素操作界面选择对应操作,点击【复制方法代码到剪贴板】

按照如上操作,可以定位到“新建联系人”窗口中的 【name】,【address】对象。

在定位【name】,【address】控件的时候,由于它们都是Edit类型控件,且其它识别属性都相同。在自动化时会被认为是同一控件。为了区分,在添加对象到模型后,需要为此元素手动添加一个index属性。

添加方式为选择【Edit】节点,【识别控件】点击【添加属性】按钮:

同样为 address 控件以同样方式添加 index属性并设置值为1: 最终对象如下:

  1. 编辑代码 打开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");(async function() {     Paste code here /})();复制代码

我们要模拟点击add按钮的操作,在模型管理器中,选中add 节点,控件操作栏选择click 方法,点击【复制方法到剪贴板】

const { TestModel } = require("leanrunner");var model = TestModel.loadModel("E:\\qtdemo\\model1.tmodel");(async function () {     Paste code here /    await model.getButton("Add").click(0, 0, 1);})复制代码

最终代码:

const { TestModel, Util } = require("leanrunner");var model = TestModel.loadModel("E:\\qtdemo\\model1.tmodel");(async function () {     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中所有对控件的操作都是异步调用,所以要加这个关键字。

  1. 运行代码

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

总结:

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

转载地址:http://wttax.baihongyu.com/

你可能感兴趣的文章
mysql多实例实例化数据库
查看>>
javascript 操作DOM元素样式
查看>>
Android 内存管理 &Memory Leak & OOM 分析
查看>>
org.openqa.selenium.StaleElementReferenceException
查看>>
HBase 笔记3
查看>>
【Linux】Linux 在线安装yum
查看>>
Atom 编辑器系列视频课程
查看>>
[原][osgearth]osgearthviewer读取earth文件,代码解析(earth文件读取的一帧)
查看>>
阿里百川码力APP监控 来了!
查看>>
使用dotenv管理环境变量
查看>>
温故js系列(11)-BOM
查看>>
Vuex学习
查看>>
bootstrap - navbar
查看>>
切图崽的自我修养-[ES6] 编程风格规范
查看>>
服务器迁移小记
查看>>
FastDFS存储服务器部署
查看>>
Android — 创建和修改 Fragment 的方法及相关注意事项
查看>>
swift基础之_swift调用OC/OC调用swift
查看>>
Devexpress 15.1.8 Breaking Changes
查看>>
Java B2B2C多用户商城 springcloud架构- common-service 项目构建过程(七)
查看>>