RDP Protocol

It Is developed by Microsoft. RDP is a extension of ITU_T (International Telecommunication Union) Protocol. it is the protocol that is used to connect the local client to the Terminal Server.
It follows ISO Model. RDP uses TCP3389 Port and UDP3389 port. By default virtual channels created by Microsoft to transfer various media types. RDP follows “BIT map cache mechanism”. It can create maximum 64000 virtual channels. RDP uses Proprietary security RSA security using RC4 ciffer . even it can SSL 64218-bit mechanism.
Versions of RDP:
                    so for we are using versions 6.0. and 6.1.
        Version 7.0.
        Version 8.0 and 8.1.
     Current version 10.0.
NOTE: Any kind of application recorded the RDP Protocol.
To Create RDP Script:
Select file > NEW or click the button. The new virtual user dialogue box opens.
Select Microsoft Remote Desktop Control Protocol (RDP). The Start Recording dialog box opens.
Click Options to set the Recording Options.
Select the RDP: Login node. Select one of the session options: Run Client, Connection File, or Default Connection File.
Select the RDP: Code Generation node and enable the desired options.
During recording to select a screen region for synchronization, click the Sync on image button on the recording toolbar and indicate an area for synchronization.
Stop recording and save the script.


Correlating Parameters:
If the Client sends the server the same data as it is received, then Vugen replaces the sent data with parameter during code generation.
To run an RDP script:
Open the Run-Time settings dialog box. Click the Run-Time Settings button on the toolbar, or select Vuser > Run-Time Settings.
Resolution (640*480) and colour depth should be same (Run-Time Settings-- > Configuration node).
 Select the Synchronization node. Select the desired settings.
 Click OK to accept the run-time settings and close the dialog box.
 Click the Run button o r select Vuser > Run.

RDP Recording Options:
Allow you to open the popup or existing RDP Connection or default connection.
Allow to generate mouse click, row mouse clicks, raw keyboard calls, connections name and synchronous radius.
Allow you to provide DoubleClick timeout snapshot prefix names.
Agent allow you to record the information gathered by RDP agent like window name, window position….... this information will be available in generation log.

Pre-Requisites:
RDP agent has to installed to get this information. RDP agent is available in additional components as part of LR installation.
All LR resolution should be same.
Colour depth should be same, try to keyboard shortcuts.
In order to execute RDP get text synchronous on text, RDP agent has to be installed.
For every user action we have to image synchronous OR windows synchronous function.

Challenges in RDP Scripts:
1)How to add sync_on_image?
Def:  ctl+alt+p (snapshot view) -->
Right click -->
add sync_on_image function

Ex: rdp_syn_on_image ("step description= ",
                                           "wait for=appear",
                                           "Add of set to input=Default",
                                             Item data, RDP_LAST);

NOTE: This function can work without agent installation.
Def: It waits until an image Appear (or) disappear.

2)How to add syn_on_window?
Def: It will wait for an window to match specified state.
     In order to execute this function RDP Agent has to be located and need to be installed.

Syntax:
 madhu=rdp_sync_on_window(RDP_LAST);
lr_output_message("%S",madhu);
if(strcmp(madhu,"0”) ==0)
{
           lr_output_message("pass");
} else {
          lr_output_message("fail");}

3)How to save an image?
sol: It saves a screen to specified location.
Syntax: rdp_save_image ("stepdescription=Mystep",
                                     "filename=C:\\path",
                                       "Image Top=0",
                                       "Image Left=0",
                                       "Image Height=600",
                                       "Image width=400",
                                       "origin=Default", RDP_LAST");

4)How to capture the window position?
Sol:  As per my requirement I may required to capture the main window position or child window position.
Syntax:  rdp_get_window_position("stepdescription=Mystep",
                                                                "snapshot=snapshot_18.inf",
                                                                 "window Title/RE=editing*",
                                                                 "window Left=param left",
                                                                 "window Top=param Top",
                                                                "window Width =param width",
                                                                 "window Height=param height",RDP_LAST);

5)How to capture the window Title?
sol:
 rdp_get_window_Title("stepdescription=Get",
                                           "snapshot=snapshot_\aint",
                                           "windowTitle/RE=pavan",
                                           "window ordinal=paramwindowordinal", RDP_LAST);

6)How to capture on screen text from main window?
Sol: Using  rdp_get_text(); we can capture the text. Always use XY co-ordinates from last point.

7)How to capture the text from child window?
sol:  -->Get the child window position.
  --> Get the text window position.
  -->Subtract child window left position text "X" position & top position with text "Y" position.
rdp_get_text("stepdescription=GetText",
                            "snapshot=snapshot_89.inf",
                            "windowTitle/RE={pavan}",
                            "Text X=320",
                            "Text Y=75",
                           "Text=chiru”, RDP_LAST);
lr_output_message("%s",lr_eval_string("{chiru}"));

8) how to handle synchronization issue in RDP protocol?
1) use RDP_synchronous_on_window.
2) use RDP_synchronous_on_image.
3) use RDP_synchronous_on_text.

9)how to write synchronous_on_text function?
Syntax:
Singh = rdp_synchronous_on_text (“ “,”snapshot=sync_90.inf”,”windowstitle/RE={pavan}”,”text x=320”,”text y=75”,”text=company”, “fail step if not found =NO”,RDP_LAST);
Lr_output_message (“%d”, Singh);

10) how to get the object information?
Sol: Retrieve the information about the objective
Syntax:
rdp_get_object_info (“     ”,”snapshot=sync_90.inf”,”windowstitle/RE={pavan}”,
RDP_LAST);

EXECUTION TIPS:
1)Use proper Think Time.
2)Use proper synchronize Timeout.
3)Use same colour depth themes, bit map caching mechanism.
4)Use proper buffer cache size.
5)Enable extended log for Agent.

1) ISSUES:
1)Connection Reset by server and terminating the user.
sol:-->Less Think time &pacing.
-->Use image sync, window sync for even user request.
FRAME WORK;
Prepare a logoff which will allow you to logoff from application and disconnect from RDP.

No comments:

Post a Comment