介绍一个QTP基础框架 - SIFL

上一篇 / 下一篇  2011-02-12 17:19:34 / 个人分类:QTP

SIFL全称SoftwareInquisitionFoundationLibrary

 

其中包含很多QTP的基础库函数,可以称之为一个QTP的基础框架,主要库函数文件包括:

AssertLib.vbs:处理断言语句和写结果。

BrowserFunctions.vbs:扩展Browser测试对象,例如OpenNewBrowser函数用于打开一个新的IE浏览器实例。

ObjectMethods.vbs:扩展各种测试对象,例如注册到WebListWebListItemsArray函数可以返回一个代表WebList各项元素的数组。

StringFunctions.vbs:处理字符串,例如StringIsEmpty函数用于判断给定的字符串是否为空。

Utility.vbs:工具类,siChildren函数用于获取WebElement的满足指定描述的子对象元素

WebTableMethods.vbs:扩展WebTable测试对象,例如WebTableGetRowValues函数用于返回指定行的数据。

 

作者主页:
http://www.softwareinquisition.com/
(注:现在好像不能访问了)

 

 

摘录WebTableMethods的函数如下:

''' <summary>

''' Returns an array containing the values from the given row

''' </summary>

''' <param name="oTable" type="WebTable">WebTable under test</param>

''' <param name="iRowNumber" type="Integer">Row number to grab</param>

''' <returns type="String()"></returns>

Public Function WebTableGetRowValues( oTable, iRowNumber)

      Dim aReturn

      For colNumber = 1 To oTable.ColumnCount(iRowNumber)

             arrayPush aReturn, Trim(oTable.GetCellData(iRowNumber, colNumber))

      Next      

      WebTableGetRowValues = aReturn

End Function

RegisterUserFunc "WebTable", "GetRowValues", "WebTableGetRowValues", True

 

''' <summary>

''' Returns the Column Number for the first occurance of sMatchString or 0 if it doesn't occur

''' </summary>

''' <param name="oTable" type="WebTable"></param>

''' <param name="sMatchString" type="String">String to match</param>

''' <returns type="Integer"></returns>

Public Function WebTableGetColumnNumber (ByRef oTable, sMatchString)

      If stringContains(sMatchString, "^#\d+$") Then

             WebTableGetColumnNumber = GetMatch(sMatchString, "^#(\d+)$")

      Else

             For rowNumber = 1 To oTable.RowCount

                    For colNumber = 1 To oTable.ColumnCount(rowNumber)

                           If StringContains(oTable.GetCellData(rowNumber, colNumber), sMatchString) Then

                                  WebTableGetColumnNumber = colNumber

                                  Exit Function

                           End If

                    Next

             Next

             WebTableGetColumnNumber = 0

      End If

End Function

RegisterUserFunc "WebTable", "GetColumnNumber", "WebTableGetColumnNumber", True

 

''' <summary>

''' Returns the Column Index for the first occurance of sMatchString or -1 if no match

''' </summary>

''' <param name="oTable" type="WebTable"></param>

''' <param name="sMatchString" type="String">String to match</param>

''' <returns type="Integer"></returns>

Public Function WebTableGetColumnIndex(ByRef oTable, sMatchString)

      WebTableGetColumnIndex = WebTableGetColumnNumber(oTable, sMatchString) - 1

End Function

RegisterUserFunc "WebTable", "GetColumnIndex", "WebTableGetColumnIndex", True

 

''' <summary>

''' Gets the Row index for the first occurance of sMatchString

''' </summary>

''' <param name="oTable" type="WebTable"></param>

''' <param name="sMatchString" type="String">String to match</param>

''' <returns type="Integer">returns row index or -1 if sMatchString isn't found</returns>

Public Function WebTableGetRowIndex (ByRef oTable, sMatchString)

      WebTableGetRowIndex = WebTableGetRowNumber(oTable, sMatchString) - 1

End Function

RegisterUserFunc "WebTable", "GetRowIndex", "WebTableGetRowIndex", True

 

''' <summary>

''' Gets the Row number for the first occurance of sMatchString

''' </summary>

''' <param name="oTable" type="WebTable"></param>

''' <param name="sMatchString" type="String">String to match</param>

''' <returns type="Integer">returns row number or 0 if sMatchString isn't found</returns>

Public Function WebTableGetRowNumber (ByRef oTable, sMatchString)

      If stringContains(sMatchString, "^#\d+$") Then

             WebTableGetRowNumber = GetMatch(sMatchString, "^#(\d+)$")

      Else

             For rowNumber = 1 To oTable.RowCount

                    For colNumber = 1 To oTable.ColumnCount(rowNumber)

                           If StringContains(oTable.GetCellData(rowNumber, colNumber), sMatchString) Then

                                  WebTableGetRowNumber = rowNumber

                                  Exit Function

                           End If

                    Next

             Next

             WebTableGetRowNumber = 0

      End If

End Function

RegisterUserFunc "WebTable", "GetRowNumber", "WebTableGetRowNumber", True

 

''' <summary>

''' Search for a string of text in the cell data of a WebTable, and return the coordinates of the cell

''' </summary>

''' <param name="oTable" type="WebTable"></param>

''' <param name="sSearch" type="String">String to match</param>

''' <returns type="String">Returns a string in the form. of "intRowNumber,intColumnNumber"</returns>

Public Function WebTableGetCellCoords (ByRef oTable, ByRef sSearch)

   For rowNumber = 1 To oTable.RowCount

       For ColumnNumber = 1 To oTable.ColumnCount(oTable.RowCount)

           If StringContains(oTable.GetCellData(rowNumber, ColumnNumber), sSearch) Then

               bFound = True

               WebTableGetCellCoords = CStr(rowNumber) & "," & CStr(ColumnNumber)

               Exit Function

           End If

       Next

   Next

   'Return 0 if it wasn't found

   WebTableGetCellCoords = "0"

End Function

RegisterUserFunc "WebTable", "GetCellCoords", "WebTableGetCellCoords", True

 

''' <summary>

''' Search one column in a webtable for a string.

''' </summary>

''' <param name="oTable" type="WebTable">Table (possibly) containing sMatchString</param>

''' <param name="sColumnHeader" type="String">Column to Search</param>

''' <param name="sSearchString" type="String">Search string</param>

''' <returns type="Boolean"></returns>

Public Function WebTableColumnContains (ByRef oTable, sColumnHeader, sSearchString)

   headerRowNumber = WebTableGetRowNumber(oTable, sColumnHeader)

      ColumnNumber = WebTableGetColumnNumber(oTable, sColumnHeader)

      WebTableColumnContains = False

   For rowNumber = headerRowNumber To oTable.RowCount

             If StringContains(oTable.GetCellData(rowNumber, ColumnNumber), sSearchString) Then

                    WebTableColumnContains = True

                    Exit Function

             End If

   Next

End Function

RegisterUserFunc "WebTable", "ColumnContains", "WebTableColumnContains", True

 

''' <summary>

''' Asserts if a table is sorted by specified column

''' </summary>

''' <param name="oTable" type="WebTable">Table to check</param>

''' <param name="sHeader" type="String">Column to check</param>

''' <param name="sOrder" type="String">Asserting order, ascending or descending</param>

''' <example>

''' Assert if first table on page "Legal Assistant Scan Categories" is sorted by

''' column "Scan Name" in ascending order

''' NavigateToPage "Legal Assistant Scan Categories"

''' Set Table = SelectFirstTable

''' oTable.AssertSortedByColumn "Scan Name", "Ascending"

''' <code>

''' LoginProfile "SUPER"

''' assertSetupMenuLinkExists "Eligible Populations"

''' </code>

''' </example>

''' <returns type="Boolean"></returns>

Public Function WebTableAssertSortedByColumn (ByRef oTable, sHeader, sOrder)

      WebTableAssertSortedByColumn = reportStatus( WebTableVerifySortOrderInColumnAdv( oTable, sHeader, Array( "SortOrder", sOrder ) ), "AssertSortedByColumn", "Table sorted by '" & sHeader & "' ordered " & sOrder )

End Function

RegisterUserFunc "WebTable", "AssertSortedByColumn", "WebTableAssertSortedByColumn", True

 

''' <summary>

''' Verify oTable has correct order

''' </summary>

''' <param name="oTable" type="WebTable">Table to check</param>

''' <param name="Header" type="String">Column to check</param>

''' <returns type="Boolean"></returns>

Public Function WebTableVerifySortOrderInColumn (ByRef oTable, Header)

      WebTableVerifySortOrderInColumn = WebTableVerifySortOrderInColumnAdv( oTable, Header, Null )

End Function

RegisterUserFunc "WebTable", "VerifySortOrderInColumn", "WebTableVerifySortOrderInColumn", True

 

''' <summary>

''' Verify oTable has correct order

''' </summary>

''' <param name="oTable" type="WebTable">Table to check</param>

''' <param name="Header" type="String">Column to check</param>

''' <param name="aOptions" type="Object()"></param>

''' <array-elements param="aOptions">

''' <element name="SortOrder" type="String" default="Ascending">Should it be sorted asecnding or descending</element>

''' <element name="SortType" type="String" default="Alphabetical">Is it supposed to be sorted alphabetically? Probably so.</element>

''' </array-elements>

''' <returns type="Boolean"></returns>

Public Function WebTableVerifySortOrderInColumnAdv (ByRef oTable, Header, aOptions)

 

      Set ptions = GetOpts( Array ( _

              "SortOrder", "Ascending", _

              "SortType", "Alphabetical" _

      ), aOptions)

 

   headerRowNumber = WebTableGetRowNumber (oTable, Header)

      ColumnNumber = WebTableGetColumnNumber(oTable, Header)

      bReturn = False

 

   'subtract the Header row number from the row count. If there are 0 or 1 rows in the table, don't worry about sort order, just

   ' say it's sorted, and exit

   If oTable.GetROProperty("rows") - headerRowNumber <= 1 Then

       WebTableVerifySortOrderInColumnAdv = True

             Exit Function

   Else

       rowNumber = headerRowNumber + 1 'initialize the row number to the row below the header

       

         For iRow = rowNumber + 1 To oTable.GetROProperty("rows")

 

           sText1 = oTable.GetCellData(iRow - 1, ColumnNumber)

           sText2 = oTable.GetCellData(iRow   , ColumnNumber)

 

           'If the sort order is descending, reverse the variables

           If LCase( oOptions("SortOrder") ) = "descending" Then

               sTemp = sText1

               sText1 = sText2

               sText2 = sTemp

           End If

 

           If sText1 < sText2 Then

               bReturn = True

           Else

               'If we've found an exception to the intended sort order, short circuit out of here

               WebTableVerifySortOrderInColumnAdv = False

                           Exit Function

                    End If

 

       Next

       

   End If

   

      WebTableVerifySortOrderInColumnAdv = bReturn

 

End Function

RegisterUserFunc "WebTable", "VerifySortOrderInColumnAdv", "WebTableVerifySortOrderInColumnAdv", True

 

''' <summary>

''' Determines whether a cell exists

''' </summary>

''' <param name="oTable" type="WebTable"></param>

''' <param name="iColumn" type="Integer"></param>

''' <param name="iRow" type="Integer"></param>

''' <returns type="Boolean"></returns>

Public Function WebTableCellExists( oTable, iRow, iColumn)

      sCellData = oTable.GetCellData(iRow, iColumn)

      WebTableCellExists = isFalse(StringContains(sCellData, "ERROR: The specified cell does not exist."))

End Function

RegisterUserFunc "WebTable", "CellExists", "WebTableCellExists", True

 

 

''' <summary>

''' Get values from specified column

''' </summary>

''' <param name="oTable" type="WebTable"></param>

''' <param name="sHeader" type="String">Column to grab</param>

''' <returns type="String()">Array of column values</returns>

Public Function WebTableGetColumnValues( oTable, sHeader )

      WebTableGetColumnValues = WebTableGetColumnValuesAdv( oTable, sHeader, Null)

End Function

RegisterUserFunc "WebTable", "GetColumnValues", "WebTableGetColumnValues", True

 

''' <summary>

''' Get values from specified column

''' </summary>

''' <param name="oTable" type="WebTable"></param>

''' <param name="sHeader" type="String">Column to grab</param>

''' <returns type="String()">Array of column values</returns>

Public Function WebTableGetColumnValuesAdv( oTable, sHeader, aOptions )

      Set ptions = getopts(Array("iFooterRows", 0), aOptions)

      iFooterRows = oOptions("iFooterRows")

'     For i = WebTableGetHeaderRow(oTable, sHea


TAG:

 

评分:0

我来说两句

Open Toolbar