技术开发 频道

透析QTP自动化测试框架SAFFRON

  4.7 检查对象是否存在

  前面的小例子仅仅实现了启动浏览器、导航、点击链接和按钮的功能,如果要组成一个完整的测试用例,还缺少一些东西,例如检查指定的对象是否存在,在SAFFRON中,用Verify函数来实现这个功能,Verify函数的定义如下所示:

Verify the Existence of an object

' objtype - values should be limited to values in the object array

' text - multi-purpose argument that indicates what to verify

' - for a link, or button, it's the text of the control

' - for a list, it's the name of the control

' - for a frame, it's the name of the frame

Public Function Verify (objtype, text)

rval
= false

localDesc
= ""

estr
= ""

If thirdlevel <> "" Then

localDesc
= GenerateDescription(level(2))

Else

localDesc
= GenerateDescription(level(1))

End If


AutoSync()


Select Case objtype

Case "Page"

Execute "rval = " & GenerateDescription(level(1)) & "Exist (0)"

If rval Then

Execute "title = " & GenerateDescription(level(1)) & "GetROProperty(" & Quote("title") & ")"

If title = text Then

rval
= true

Else

rval
= false

End If

End If

Case "CurrentFrame"

If thirdlevel <> "" Then

estr
= "rval = " & localDesc

End If

Case "Link"

estr
= "rval = " & localDesc & GenerateObjectDescription("Link", "innertext:=" & text)

Case "WebButton"

estr
= "rval = " & localDesc & GenerateObjectDescription("WebButton", "value:=" & text)

Case "WebList"

estr
= "rval = " & localDesc & GenerateObjectDescription("WebList", "name:=" & text)

Case "WebEdit"

estr
= "rval = " & localDesc & GenerateObjectDescription("WebEdit", "name:=" & text)

End Select


If estr <> "" Then

Execute estr + "Exist (0)"

End If


If rval Then

Report micPass, objtype
& " Verification", "The " & objtype & " " & Quote(text) & " was verified to exist"

Else

Report micFail, objtype
& " Verification", "The " & objtype & " " & Quote(text) & " was not found"

End If


If "True" = rval Then

rval
= True

Else

rval
= False

End If


Verify
= rval

End Function

  由于判断不同对象的存在需要采用不同的属性,因此Verify函数中对不同的对象类型进行判断、分别处理。例如,对于Link类型的对象,用innertext属性,对于WebButton,则采用value属性,但是最后都需要组合成一条语句,后接"Exist",通过Execute方法执行这个语句,从而实现对象是否存在的判断。

  对于页面对象(Page)的存在性检查有点不一样,采用的是以下脚本:

Case "Page"

  
Execute "rval = " & GenerateDescription(level(1)) & "Exist (0)"

  
If rval Then

  
Execute "title = " & GenerateDescription(level(1)) & "GetROProperty(" & Quote("title") & ")"

  
If title = text Then

  rval
= true

  
Else

  rval
= false

  
End If

  
End If

  通过GetROProperty方法获取当前页面的title属性,然后与传入的"text"参数进行比较,如果相等,则认为页面对象是存在的。

  在测试脚本中可以这样使用Verify函数:

' 启动浏览器

  Launch
"website","http://127.0.0.1:1080"

  
' 导航到“http://127.0.0.1:1080/WebTours”

  BrowseTo
"http://127.0.0.1:1080/WebTours/"

  
If Verify ("Link","administration")= False then

  Reporter.ReportEvent micFail,
"检查链接","链接不存在"

  
Else

  
' 点击名为“administration”的链接

  Activate
"Link","administration"

  
End IF

  脚本中先用Verify检查名为"administration"的链接对象是否存在,如果不存在则提示错误,如果存在则进一步调用Activate函数点击链接。

0
相关文章