用户体验测试的自动化实现 - 第二种检查Tab顺序的方法

注:本文最早发表在《51测试天地》第九期

第二种检查Tab顺序的方法

前面介绍的检查TAB顺序的方法是通过模拟用户按下TAB键,然后检查控件的Focused属性来判断是否正确地跳转,而接下来要介绍的方法是通过读取控件的“TabIndex”属性来判断控件是否处于正确的TAB顺序的位置中。

我们首先查看一下VB程序的界面设计器中的属性窗口,如图7所示。

用户体验测试的自动化实现 - 第二种检查Tab顺序的方法

<shapetype id="_x0000_t75" stroked="f" filled="f" path="[email protected]@[email protected]@[email protected]@[email protected]@5xe" o:preferrelative="t" o:spt="75" coordsize="21600,21600"><stroke joinstyle="miter"></stroke><formulas><f eqn="if lineDrawn pixelLineWidth 0"></f><f eqn="sum @0 1 0"></f><f eqn="sum 0 0 @1"></f><f eqn="prod @2 1 2"></f><f eqn="prod @3 21600 pixelWidth"></f><f eqn="prod @3 21600 pixelHeight"></f><f eqn="sum @0 0 1"></f><f eqn="prod @6 1 2"></f><f eqn="prod @7 21600 pixelWidth"></f><f eqn="sum @8 21600 0"></f><f eqn="prod @7 21600 pixelHeight"></f><f eqn="sum @10 21600 0"></f></formulas><path o:connecttype="rect" gradientshapeok="t" o:extrusionok="f"></path><lock aspectratio="t" v:ext="edit"></lock></shapetype><shape id="_x0000_i1025" style="WIDTH: 214.5pt; HEIGHT: 228pt" type="#_x0000_t75"><imagedata o:title="" src="file:///D:/DOCUME~1/ADMINI~1/LOCALS~1/Temp/msohtml1/01/clip_image001.png"></imagedata></shape>

7 VB程序的界面设计器中的属性窗口

可以看到ComboBox控件的属性中有一个名为TabIndex的属性,该属性用于设置或返回控件的Tab键顺序。如果能把这个属性值用起来,则可以在运行时直接取到这个值与预期的TAB顺序值进行比较,从而判断界面控件的TAB顺序设置是否正确。

而在QTP中使用Object Spy可以查看到相同的属性值,如图8所示。这样就意味着可以在脚本中访问和获取该属性值,用于判断控件TAB顺序的设置是否正确。

用户体验测试的自动化实现 - 第二种检查Tab顺序的方法

<shape id="_x0000_i1027" style="WIDTH: 263.25pt; HEIGHT: 427.5pt" type="#_x0000_t75"><imagedata o:title="" src="file:///D:/DOCUME~1/ADMINI~1/LOCALS~1/Temp/msohtml1/01/clip_image003.png"><font size="3"></font></imagedata></shape>

8 Object Spy查看TabIndex属性值

因此第二种检查TAB顺序正确性的脚本可以按以下方式编写:

' 创建Dictionary对象

Set Dic = CreateObject("Scripting.Dictionary")

' 添加Dictionarykeyvalue,把顺序号作为Key、控件对象作为Value

Dic.Add "0" , vbWindow("Form1").VbComboBox("Combo1")

Dic.Add "1" , vbWindow("Form1").VbEdit("Text1")

Dic.Add "2" , vbWindow("Form1").VbCheckBox("Check1")

Dic.Add "3" ,vbWindow("Form1").VbButton("Cancel")

Dic.Add "4" , vbWindow("Form1").VbButton("OK")

' 定位到Form1窗口

vbWindow("Form1").Activate

For I=0 To Dic.Count

If CheckTabIndex(Dic.Item(CStr(I)) , I ) = False Then

' 如果检查到TabIndex属性值与预期值不一致,则退出循环

Exit For

End If

Next

' 检查控件的TabIndex属性

Public Function CheckTabIndex(TestObject,TabIndexNum)

If TestObject.CheckProperty("TabIndex" ,TabIndexNum , 2) Then

CheckTabIndex = True

Else

CheckTabIndex = False

Reporter.ReportEvent micFail,"CheckTabIndex" , "控件的Tab顺序号与预期值不一致!"

End IF

End Function

该脚本实现了对如图9所示的界面的TAB顺序正确性的检查。

用户体验测试的自动化实现 - 第二种检查Tab顺序的方法

<shape id="_x0000_i1028" style="WIDTH: 233.25pt; HEIGHT: 189.75pt" type="#_x0000_t75"><imagedata o:title="" src="file:///D:/DOCUME~1/ADMINI~1/LOCALS~1/Temp/msohtml1/01/clip_image005.png"><font size="3"></font></imagedata></shape>

9 需要检查TAB顺序的程序界面

该脚本的运行结果如图10所示。

用户体验测试的自动化实现 - 第二种检查Tab顺序的方法

<shape id="_x0000_i1029" style="WIDTH: 415.5pt; HEIGHT: 311.25pt" type="#_x0000_t75"><imagedata o:title="" src="file:///D:/DOCUME~1/ADMINI~1/LOCALS~1/Temp/msohtml1/01/clip_image007.png"><font size="3"></font></imagedata></shape>

10 运行结果

在检查控件的TabIndex属性时仍然使用的是CheckProperty函数,实际上也可以通过Object属性来访问TabIndex属性,可把CheckTabIndex函数改成如下所示的脚本:

' 检查控件的TabIndex属性,通过Object属性访问TabIndex

Public Function CheckTabIndex2(TestObject,TabIndexNum)

If TestObject.Object.TabIndex=TabIndexNum Then

CheckTabIndex2 = True

Else

CheckTabIndex2 = False

Reporter.ReportEvent micFail,"CheckTabIndex" , TestObject.Object.Name & "控件的Tab顺序号与预期值不一致!"

End IF

End Function

则运行的结果如图11所示。

用户体验测试的自动化实现 - 第二种检查Tab顺序的方法

<shape id="_x0000_i1026" style="WIDTH: 414.75pt; HEIGHT: 217.5pt" type="#_x0000_t75"><imagedata o:title="" src="file:///D:/DOCUME~1/ADMINI~1/LOCALS~1/Temp/msohtml1/01/clip_image009.png"><font size="3"></font></imagedata></shape>

11 修改CheckTabIndex函数后的运行结果

可以看到测试结果中少了很多CheckProperty函数所写的Log,我们仅关心控件的TabIndex属性与预期值不一致的情况。