MSFlexGrid 是微软的 ActiveX 表格控件,功能强大,在 VB 编程中经常使用。
QTP 录制下来的脚本通常如下所示:
VbWindow("Form1").Activate
VbWindow("Form1").AcxTable("MSFlexGrid").SelectRow 1
VbWindow("Form1").AcxTable("MSFlexGrid").Click 196,23
VbWindow("Form1").VbList("List1").Select "2 - com2"
VbWindow("Form1").AcxTable("MSFlexGrid").SelectRow 2
VbWindow("Form1").AcxTable("MSFlexGrid").Click 120,39
VbWindow("Form1").VbEdit("Text2").Set "100"
VbWindow("Form1").AcxTable("MSFlexGrid").SelectRow 4
VbWindow("Form1").AcxTable("MSFlexGrid").Click 145,69
VbWindow("Form1").VbEdit("Text2").Set "200"
VbWindow("Form1").AcxTable("MSFlexGrid").SelectRow 9
VbWindow("Form1").AcxTable("MSFlexGrid").Click 151,141
VbWindow("Form1").VbList("List1").Select "True"
VbWindow("Form1").VbButton(" 确定 ").Click
这样的脚本不仅冗长,而且与坐标值相关,因此难以维护,代码的重用性也不高。适当封装一下,则可以下面的更为优雅的方式来编写测试脚本:
VbWindow("Form1").AcxTable("MSFlexGrid").MSFlexGrid_SetValue "Settings",123
Msgbox VbWindow("Form1").AcxTable("MSFlexGrid").MSFlexGrid_GetValue("Settings")
只要适当研究一下 MSFlexGrid 控件的属性和方法,再加上 QTP 的 RegisterUserFunc 函数的使用即可完成封装。实现代码如下:
Function MSFlexGrid_GetValue( obj, PropertyName )
For i =1 to obj.RowCount
If obj.Object.TextMatrix(i,0) = PropertyName Then
PropertyValue = obj.GetCellData(i,1)
Exit For
End If
Next
MSFlexGrid_GetValue = PropertyValue
End Function
RegisterUserFunc "AcxTable","MSFlexGrid_GetValue","MSFlexGrid_GetValue"
Function MSFlexGrid_SetValue( obj, PropertyName, PropertyValue )
For i =1 to obj.RowCount
If obj.Object.TextMatrix(i,0) = PropertyName Then
PropertyValue = obj.SetCellData(i,1,PropertyValue)
Exit For
End If
Next
End Function
RegisterUserFunc "AcxTable","MSFlexGrid_SetValue","MSFlexGrid_SetValue"
自动化测试项目中的两大类难题是:
1 、测试脚本开发的管理问题
2 、测试脚本开发的技术问题
第一类难题主要通过采用各种脚本框架来解决,例如模块结构化框架、数据驱动框架、关键字驱动框架等。而第二类难题则主要靠自动化测试工程师通过开发 QtestWare 这样的测试对象级的框架来解决。