GP/QTP Automation: GUI Mapping script
All related posts: Reference Page – GP/QTP Automation
Purpose: extract object descriptions from Dexterity Dictionary and create custom XML-based GUI Map file for QTP.
Used resources: Service Functions – XML (QTP, VBScript)
Option Explicit
' Purpose: Map GP Dexterity GUI into XML file
' Requirements: GP App started (don't have to login)
'Output: ".....\DexGUI.xml"
Dim GPApp, objForm, objWindow, objWndField
Dim sGPMapXML, sCurrentProduct
Dim FormIter, WinIter, FieldIter
Dim objGPMapXML, objRoot, objFormMapXML, objWndMapXML, objFldMapXML
Set GPApp = GetObject("", "Dynamics.Application")
sCurrentProduct = GPApp.CurrentProduct
'Define or parameterize your output folder here
sGPMapXML = "C:\TEMP\" & "\DexGUI.xml"
Set objGPMapXML = XMLUtil.CreateXML("DexGUI")
Set objRoot = objGPMapXML.GetRootElement
FormIter = 1
Set objForm = GPApp.GetFirstForm()
Do
If Not (objForm is Nothing) Then
Set objFormMapXML = CreateChildElementByName(objRoot, "Form", "")
objFormMapXML.AddAttribute "name", objForm.GetName()
objFormMapXML.AddAttribute "childcount", CStr(objForm.CountWindows())
WinIter = 1
Set objWindow = objForm.GetFirstWindow()
Do
If Not (objWindow is Nothing) Then
Set objWndMapXML = CreateChildElementByName(objFormMapXML, "Window", "")
objWndMapXML.AddAttribute "name", objWindow.GetName()
objWndMapXML.AddAttribute "childcount", CStr(objWindow.CountFields())
FieldIter = 1
Set objWndField = objWindow.GetFirstWindowField()
Do
If Not (objWndField is Nothing) Then
Set objFldMapXML = CreateChildElementByName(objWndMapXML, "Field", "")
objFldMapXML.AddAttribute "name", objWndField.GetName()
objFldMapXML.AddAttribute "id", CStr(objWndField.GetID())
End If
FieldIter = FieldIter +1
Set objWndField = objWindow.GetNextWindowField()
Loop While FieldIter <= objWindow.CountFields()
End If
Set objWindow = objForm.GetNextWindow()
WinIter = WinIter + 1
Loop While WinIter <= objForm.CountWindows()
End If
Set objForm = GPApp.GetNextForm()
FormIter = FormIter + 1
Loop While FormIter <= GPApp.CountForms()
objGPMapXML.SaveFile sGPMapXML
Set GPApp = Nothing
Set objForm = Nothing
Set objWindow = Nothing
Set objWndField = Nothing
Set objGPMapXML = Nothing
Set objRoot = Nothing
Set objFormMapXML = Nothing
Set objWndMapXML = Nothing
Set objFldMapXML = Nothing

