由于 Robot 对界面控件识别的局限性,Robot 不能很好地操作一些控件,例如:日期时间控件 (DateTimePicker),属性页控件 (TabControl) 和工具栏控件 (Toolbar) 等等。本文讲述了一种在 Robot 中调用 Windows API 来操作这些常用 GUI 控件的方法,该方法可以应用于所有的 Windows 中常用的控件。使用该方法能极大地扩展 Robot 与 GUI 控件交互的功能,同时有助于提高 GUI 自动化测试脚本的稳定性和可移植性。
在 Rational Robot 中录制或者开发 GUI 自动化测试脚本的过程中,我们会发现 Rational Robot 在操作一些常用的 GUI 控件上有很多的局限性。这主要是因为 Rational Robot 无法识别被测控件的全部属性或者被测控件的属性会随着环境而改变导致其状态和录制脚本时候的状态不一致。
本文提供了一种方法可以对常用的 GUI 控件进行精确地操作。使用这个方法,能够保证我们对控件操作的正确性,同时还不依赖于控件的初始状态和环境,大大地提高了脚本的稳定性和可移植性。
在 Rational Robot 脚本中利用 Windows API 来操作 GUI 控件的基本原理
这个方法主要是利用了 Windows API 中的 SendMessage 函数能够模拟用户界面操作的功能。SendMessage 能够通过给特定的对象发送消息来达到和用户在界面上用鼠标或者键盘直接操作一样的功能。
下面给出这个方法的大致步骤:
- 初始化 SendMessage 需要用到的参数。
- 申请内存区域,通过给内存区域向 SendMessage 传递参数。
- 调用 SendMessage 函数发送操作的消息。
- 操作结束。
下面我们将通过使用 Windows API 来操作日期时间控件 (DateTimePicker) 为例子来介绍这个方法的具体实现。
在接下来的内容中,您将可以了解到如下的内容:
- 日期时间控件简介。
- Rational Robot 对日期时间控件操作的局限性。
- SendMessage 函数简介。
- 在 Rational Robot 中如何调用 Windows API 函数。
- 在 Rational Robot 中如何实现参数的地址传递。
- 利用 Windows API 对日期时间控件操作的方法。
- 利用 Windows API 来操作 GUI 控件的实现细节。
|
在 Windows 程序中常用的 GUI 控件有日期时间控件 (DateTimePicker),属性页控件 (TabControl) 和工具栏控件 (Toolbar) 等等。
日期时间控件 (DateTimePicker, 简称 DTP 控件 ) 通常和月历控件绑定在一起工作,这个控件允许用户选择日期、时间和月份或者置成空值。缺省时,用户可单击控件的右边的下拉按钮,即可弹出月历控件以供用户选择日期,通过风格的改变还可在日期时间控件内显示时间。
在月历控件中,用户可按击控件左右两边的箭头按钮 , 可前后翻页显示相关的月份。
图 1. 日期时间控件简单示例
在上图示例中,用户可以使用日期时间控件来设置 ExpireDate 属性的值。
文章来源于领测软件测试网 https://www.ltesting.net/