技术开发 频道

透析QTP自动化测试框架SAFFRON

4.6 一个小例子
  到现在为止,我们可以使用SAFFRON的Launch、BrowserTo和Activate函数来编写简单的脚本启动浏览器,导航到指定的页面,点击链接和按钮,例如下面就是一个综合了这几个功能的脚本:
     ' 启动浏览器
     Launch "website","http://127.0.0.1:1080"
     ' 导航到“http://127.0.0.1:1080/WebTours”
     BrowseTo "http://127.0.0.1:1080/WebTours/"
     ' 点击名为“administration”的链接
     Activate "Link","administration"

  该脚本调用SAFFRON框架的Launch函数启动IE浏览器,然后导航到“http://127.0.0.1:1080/WebTours”,点击如图所示的页面中名为“administration”的链接。

  脚本的测试结果如图所示。

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
相关文章