IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 系统运维 -> QT 自动化 UI 黑盒测试的挑战及解决 -> 正文阅读

[系统运维]QT 自动化 UI 黑盒测试的挑战及解决

最近有一个需求是对QT UI 程序进行黑盒自动化测试.

目标程序

qt 3.X
windows 平台

挑战

使用现有的市面上的测试框架无法捕获到 控件的数据.
eg:

  • 文本框、按钮 拿不到数据 无法定位点击.
  • 各组件使用spy++ 显示 unname

解决

经过排查后 发现 原因是 QT 自绘组件导致的。
QT 自己渲染出了显示结果在屏幕上。
这种情况似乎在QT上还是挺常见的。

说复杂不复杂,说简单还是需要一点工作量:

现在我们的问题是 句柄拿不到数据.

句柄 <=> 我们的代码 <=> QT的数据

QT的控件基本都是Widget作为父类 . 所以我们要获取 需要操作的控件 的 Widget指针.

句柄 => Widget* => 转特定控件指针 => 操作数据 或者 触发动作

先看一下句柄怎么转Widget ,大致步骤如下:

Widget* wg = Widget.find(HANDLE hd);
QLabel* ql = (QLabel*)wg;
getText = ((*ql)+3)
getText();

之所以用 find 是因为 人家管理了所有的子类的HANDLE。

得到 Widget* 后如何知道它属于哪个控件子类的指针?
Widget*指针可以获取到当前控件的名字.eg: QLabel,然后我们 IDA 等分析 QLabel的各种方法在虚表中的偏移.
在这里插入图片描述

Widget::find 在哪里?
如果是使用的qt-mt.dll 则就是在其中的导出函数.
如果使用的是qtXwidgets.dll 则在其中:

widget

在这里插入图片描述

最终我们将该程序编为一个 dll,在需要的时机 由外部测试 程序传入(RPC等等方式) 需要操作的句柄 和 动作.
dll 通过一系列上面的函数 实现了 黑盒 调用QT.

总结

  • QT 是自绘的
  • 要想获取 文本框、标签 里的数据 ,或者设置数据 最佳的方式就是 注入 dll 调用 QT 自己的API来代理我们 获取数据 或者 操纵控件。

后记

在写这篇文章的时候 我在工作中操作的是 qt-mt.dll 而我本机环境 只有 qt5widgets.dll。。。所以对于高版本的API也不能顺利的截图了。只能这样了。

  系统运维 最新文章
配置小型公司网络WLAN基本业务(AC通过三层
如何在交付运维过程中建立风险底线意识,提
快速传输大文件,怎么通过网络传大文件给对
从游戏服务端角度分析移动同步(状态同步)
MySQL使用MyCat实现分库分表
如何用DWDM射频光纤技术实现200公里外的站点
国内顺畅下载k8s.gcr.io的镜像
自动化测试appium
ctfshow ssrf
Linux操作系统学习之实用指令(Centos7/8均
上一篇文章      下一篇文章      查看所有文章
加:2021-09-27 14:29:21  更:2021-09-27 14:30:40 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/15 15:24:55-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码