Synchronization refers to waiting for windows and objects to become available before executing an action. This is necessary when recording Citrix scripts because, for example, if a step in a script opens a window, and the next step performs an action in that window, the second step cannot be implemented until the window opens. In order to ensure that VuGen does not replay the script incorrectly, it automatically generates functions that synchronize the script by waiting for windows or objects to become available. In addition, you can add synchronization functions manually.
To choose the most suitable synchronization mechanisms for a particular use-case scenario, it is important to understand the benefits and drawbacks of each:
- Bitmap synchronization (Exact level). This is the fastest, most reliable, and least-consuming synchronization operation. It should be used by default.
- Bitmap synchronization (non-Exact levels). This consumes additional resources on the load generator machine. In general, this mechanism is not recommended, unless you know that you need it for a particular purpose.
- _obj_ sync functions. This can be a good way to improve script stability, but requires Agent presence on the server side, which cannot always be achieved. It also creates additional traffic to the server (this should not be an issue, but should at least be considered).
- _text. Same as _obj_. Some applications or technologies might not support this.
- _ocr_. This should be used with caution. It consumes significant amounts of hardware resources on the load generator machine.
Exact-level bitmap synchronization should cover most use-case scenarios. Other synchronization mechanism usage should be used only when there is specific reason.
For more information about _text and _ocr functions, see the relevant Synchronization Functions in the Function Reference.
Note: To prevent a false failure in bitmap synchronization or OCR synchronization, set the Bitmap polling delay in the runtime settings Citrix > Synchronization view, to a non-zero value. A recommended value is 1000 msecs.