由于 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 能够通过给特定的对象发送消息来达到和用户在界面上用鼠标或者键盘直接操作一样的功能。
下面给出这个方法的大致步骤:
下面我们将通过使用 Windows API 来操作日期时间控件 (DateTimePicker) 为例子来介绍这个方法的具体实现。
在接下来的内容中,您将可以了解到如下的内容:
|
在 Windows 程序中常用的 GUI 控件有日期时间控件 (DateTimePicker),属性页控件 (TabControl) 和工具栏控件 (Toolbar) 等等。
日期时间控件 (DateTimePicker, 简称 DTP 控件 ) 通常和月历控件绑定在一起工作,这个控件允许用户选择日期、时间和月份或者置成空值。缺省时,用户可单击控件的右边的下拉按钮,即可弹出月历控件以供用户选择日期,通过风格的改变还可在日期时间控件内显示时间。
在月历控件中,用户可按击控件左右两边的箭头按钮 , 可前后翻页显示相关的月份。
在上图示例中,用户可以使用日期时间控件来设置 ExpireDate 属性的值。