• 软件测试技术
  • 软件测试博客
  • 软件测试视频
  • 开源软件测试技术
  • 软件测试论坛
  • 软件测试沙龙
  • 软件测试资料下载
  • 软件测试杂志
  • 软件测试人才招聘
    暂时没有公告

字号: | 推荐给好友 上一篇 | 下一篇

透析QTP自动化测试框架SAFFRON

发布: 2009-5-25 19:09 | 作者: 网络转载 | 来源: 测试时代采编 | 查看: 387次 | 进入软件测试论坛讨论

领测软件测试网

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函数点击链接。

4.8 在文本框输入字符串

在SAFFRON中,可以使用EnterTextIn函数来给输入框(WebEdit对象)输入字符串。EnterTextIn函数的定义如下所示:
     ' Enters text into an edit field
     ' objname - name of the control -- use Object Spy if you don't know what it is
     ' text    - the text to enter into the control
     Public Function EnterTextIn (objname, text)
      localDesc = ""
      rval = true
      If thirdlevel <> "" Then
       localDesc = GenerateDescription(level(2))
      Else
       localDesc = GenerateDescription(level(1))
      End If
     
      AutoSync()
     
      localDesc = localdesc & GenerateObjectDescription("WebEdit", "name:=" & objname)
      Execute localDesc & "Set (" & Quote(text) & ")"
      Report micPass, "Enter Text", "Text: " & Quote(text) & " was entered into " & Quote(objname)
      EnterTextIn = rval 
     End Function

例如,如果我们要在如图所示的登录界面中输入用户名和密码,则可以使用SAFFRON的EnterTextIn函数来实现。

测试脚本可以这样编写:
     ' 输入用户名
     EnterTextIn "username","chennengji" 
     ' 输入密码
     EnterTextIn "password","123"

4.9 读取文本框的字符串

在SAFFRON中,可以使用EnterTextIn函数来给输入框(WebEdit对象)输入字符串。对应的有一个名为GetTextFrom的函数,用于读取输入框和文本列表的字符串,GetTextFrom的定义如下所示:
     ' Obtains text from a control
     ' objtype - is the type of control the get the text from
     ' objname - is the name of the control -- use Object Spy if you don't know the name
     ' returns - the text of the control
     Public Function GetTextFrom (objtype, objname)
      text = ""
      localDesc = ""
      If thirdlevel <> "" Then
       localDesc = GenerateDescription(level(2))
      Else
       localDesc = GenerateDescription(level(1))
      End If
     
      AutoSync()
     
      Select Case objtype
       Case "WebEdit"
        Execute "text = " & localDesc & GenerateObjectDescription("WebEdit", "name:=" & objname) & "GetROProperty (" & Quote("value") & ")"
       Case "WebList"
        Execute "text = " & localDesc & GenerateObjectDescription("WebList", "name:=" & objname) & "GetROProperty (" & Quote("value") & ")"
      End Select
      Report micPass, "Capture Text", "Text: " & Quote(text) & " was captured from the control " & Quote(objname)
      GetTextFrom = text
     End Function

假设我们需要读取如图所示的界面中的“Departure City”和“Arrival City”这两个文本列表(WebList对象)中的字符串,则可以使用GetTextFrom函数。

测试脚本可以这样编写:
     ' 获取航班起始城市
     DepartureCity = GetTextFrom( "WebList","depart")
     ' 获取航班终点城市
     ArrivalCity = GetTextFrom( "WebList","arrive")

当然,也可以使用相同的函数来读取文本框(WebEdit对象)的字符串,例如下面的脚本读取“NO. of Passengers”对应的文本框中的字符串:
     ' 获取乘客数量
     PassengerNumber = GetTextFrom( "WebEdit","numPassengers")

延伸阅读

文章来源于领测软件测试网 https://www.ltesting.net/

53/5<12345>

关于领测软件测试网 | 领测软件测试网合作伙伴 | 广告服务 | 投稿指南 | 联系我们 | 网站地图 | 友情链接
版权所有(C) 2003-2010 TestAge(领测软件测试网)|领测国际科技(北京)有限公司|软件测试工程师培训网 All Rights Reserved
北京市海淀区中关村南大街9号北京理工科技大厦1402室 京ICP备2023014753号-2
技术支持和业务联系:info@testage.com.cn 电话:010-51297073

软件测试 | 领测国际ISTQBISTQB官网TMMiTMMi认证国际软件测试工程师认证领测软件测试网