Function Libraries > Sample Scripts for the Web Environment > Useful Web Table Functions

Useful Web Table Functions

Following are functions that may be useful when working on Web Tables. The following examples can be found in the WebTableUsefullFunctions.vbs file located in the <UFT installation folder>CodeSamplesPlus folder.

' ******************************** Function Library *********************************

' Registering both functions
RegisterUserFunc "WebTable", "ObjectsByMicClass", "ObjectsByMicClass"
RegisterUserFunc "WebTable", "ItemByKeyColumn", "ItemByKeyColumn"

' Function: ObjectsByMicClass
' Description: Returns a collection of objects. All the objects in a
' WebTable that have the specified MicClass
' Return Value: A collection of objects
' Arguments:
' Obj - Test Object (WebTable)
' micClass - The micClass of the objects to retrieve
'---------------------------------------------------------------------------------------------------------
Function ObjectsByMicClass(Obj, micClass)
	Set Table = Obj
	' Create a collection object to hold the items
	Set objCollection = CreateObject("Scripting.Dictionary")
	' Go over all the cells in the table, and look for objects with the specified micClass
	For row=1 to Table.RowCount
		ColumnCount=Table.ColumnCount(row)
		For col=1 to ColumnCount
			For ItemIndex=0 to Table.ChildItemCount(row, col, micClass)-1
				Set childItem=Nothing
				Set childItem = Table.ChildItem(row, col, micClass, ItemIndex)
				If Not childItem is Nothing Then
					' If the cell contains a micClass object, add it to the collection
					ItemKey = objCollection.Count + 1
					objCollection.Add ItemKey, childItem
				End if
			Next
		
	
	Set ObjectsbyMicClass = objCollection
End Function


' Function: ItemByKeyColumn
' Description: Returns an item from a column, based on the value of a
' key column
' Return Value: Object
' Arguments:
' Obj - Test Object (WebTable)
' KeyColumnIndex - Index of the KeyColumn
' KeyColumnValue - Value to search for in the key column
' KeyItemIndex - Index of the value in the key column (if there is
' more than one). If 0, the first item will be used.
' TargetColumnIndex - Column from which to retrieve the target item
' micClass - The micClass of the target item
' TargetItemIndex - Index of the target item to retrieve (if there is
' more than one). If 0, the first item will be used.
' ----------------------------------------------------------------------------------------------------
Function ItemByKeyColumn(Obj, KeyColumnIndex, KeyColumnValue, KeyItemIndex, TargetColumnIndex, micClass, TargetItemIndex)
	Set Table = Obj
	rowCount = Table.RowCount
	' If TargetItemIndex was not specified, use 1 as default
	If TargetItemIndex < 1 Then
		TargetItemIndex = 1
	End If
	' If KeyColumnIndex was not specified, use 1 as default
	If KeyItemIndex < 1 Then
		KeyItemIndex = 1
	End If

	' Look for KeyColumnValue in the key column to determine from which
	' row to retrieve the target item
	Row = 0
	foundIndex = 0
	While Row <= RowCount And foundIndex < KeyItemIndex
		Row = Row + 1
		CellData = Table.GetCellData(Row, KeyColumnIndex)
		If CellData = KeyColumnValue Then
			foundIndex = foundIndex + 1
		End If
	Wend
	If foundIndex < KeyItemIndex Then
		Exit Function
End If

	' Now that we know the row, retrieve the item (according to its micClass)
	' from the target column.
	ChildItemsCount = Table.ChildItemCount(Row, TargetColumnIndex, micClass)
	If ChildItemsCount >=1 And ChildItemsCount >= TargetItemIndex Then
	Set GetItemByKeyColumn = Table.ChildItem(Row, TargetColumnIndex, micClass, TargetItemIndex-1)
	End If
End Function

' ******************* Examples that use these functions ******************************

' Using the ItemByKeyColumn function
Set obj = Browser("Table with objects").Page("Itenerary: Mercury Tours").WebTable("Acapulco to Zurich").ItemByKeyColumn(1,"FLIGHT",2,3,"WebElement",1)
msgbox obj.GetROProperty("innerhtml")

' Using the ObjectsByMicClass function
Set collection = Browser("Browser").Page("Page").WebTable("Table").ObjectsByMicClass("WebCheckBox")
For i=1 to collection.count
	If collection(i).GetROProperty("checked") Then
		collection(i).Set "OFF"
	Else
		collection(i).Set "ON"
	End If
Next