Classmap or alias map delphi controls in SilkTest open agent
Out of the box SilkTest's Open Agent will recognise each delphi control as the base 'Control' class. By classmapping the Delphi classes to support SilkTest classes we can get improved recognition. Below is a demonstration of how to classmap (alias map) Delphi controls in SilkTest's Open Agent.
This applies to both Silktest Classic Open Agent and to Silktest Workbench (which only uses Open Agent).
In this example we will be using the free sample Delphi application found at: http://www.del123.com
Here is an example of how Silktest Workbench identifies some of the control types before class mapping, for the purpose of demonstrating how this works we will concentrate & use the TEdit control found in the "database - filtering" demo under the "search All" label as per the screenshot below:
In the example below we see how Silktest workbench identifies the control:
and here is the same control but as seen in Silktest Classic open agent:
To classmap (alias map) such control types to a supported control type navigate to the appropriate plugin:
For Silktest 2010 goto: x:\Program Files\Silk\SilkTest\ng\agent\plugins\com.borland.fastxd.techdomain.win32.agent_18.104.22.16803
For Silktest 2011 goto: x:\Program Files\Silk\SilkTest\ng\agent\plugins\com.borland.fastxd.techdomain.win32.agent_22.214.171.12426
note: where x is the drive where Silktest is installed
and edit the "plugin.xml" file, then navigate to the section:
and for purpose of demonstrate how this works, try to map the "TEdit" control type to a "TextField", like so:
<WINDOWCLASS name="TEdit" controlType="TextField" />
here is an actual screenshot of what you should see (view from notepad++ file editor)
Below is a full list of control types which Silktest Open Agent allows you to map:
- Button (all kinds of buttons, including radiolist and push buttons)
- TabControl (those are page lists)
After you map all the controls, save your updated XML document.
In order for Silktest to recognize the new mappings you will need to:
- stop the open agent
- stop the windows service "SilkTest Information Service"
- then you need to start the windows service "SilkTest Information Service" again
- note about windows 7/2008, these environments, even for users already logged in as administrators, that all processes by default run as a restricted user
-- often if you have issues in such environments, ensure that you run the process as administrator, right mouse click the process or shortcut and select the option to "Run As Administrator", this ensures the issue you seeing is not a lock down in your environment.
- finally start the open agent but with the -clean parameter, this switch clears all settings from memory
-- for example you could create a 2nd shortcut to the OA with this switch
Note: When you start the OA with this parameter, due to its nature it will take longer to invoke the agent then via the normal shortcut.
Once the "SilkTest Information Service" windows service and the Open Agent has restarted clean, then you will be able to identify the control as the new type:
Please see below an example of how Silktest workbench now recgnises the mapped control
also see below an example of how Silktest Classic with open agent now recognises the same control
If you have any other types of unsupported controls which cannot be mapped to the list above, then you may be able to use other techniques like Raw Attach and X & Y co-ordinates to deal with the control.