After reading the last section, you might be surprised to find that sometimes you might want to slow the action down a little. Why? Well, because of the way the windows are stacked, every time you bring a window to the foreground, the WinFrame server has to resend the whole window's information, instead of just the portion that has changed. Occasionally, depending on network speed, Window's repainting speed, a WinFrame session will miss recognizing the action performed on it.
This, fortunately, happens only occasionally on certain machines only. In addition, I've only noticed this happening with mouse actions (click, double click, drag). Keyboard types are almost always recognized correctly, so you might want to to consider this.
If you have no choice but to use mouse actions, what you can do is put a delay
after the click (one second is enough), so that the WinFrame window gets a chance
to receive the action before moving on to the next window. In the module that
has been made available, these will be the
In order to use the module, all you have to do is load the compile module using
reload() function. Then the rest of
the script will look like a regular GUI virtual user script, with transactions
and rendezvous as needed. I have tried to include as much of the regular GUI
actions as possible into the module. In addition, I have included the text check
(actually, it's really text wait) functions that can be used to verify the end
of a transaction.
Some of the text wait functions will actually allow you to specify a transaction
as a parameter. When the text has appeared, the function will execute the
command on the transaction parameter specified before returning. This is more
of a convenience than anything else.
Certain functions also optionally accepts both a rendezvous and transaction names. This is typically for the menu selection function (if you decide to use it), where you'll usually want to synchronize the action just prior to executing the menu item selection. Again, this is mainly for convenience than anything else.
There are also functions (those that end with
_delayed) that allow
you to incorporate some delay either before or after the GUI action, or even
Well, sooner or later, it'll come down to work. Unfortunately, this is the most tedious part.
First of all, create the GUI file entries for the WinFrame session windows.
create_duplicate_GUI_window() function in the module to
quickly create the GUI file entries.
The easiest way to create the actual script is probably to record the script
on one WinFrame session. WinRunner will record mouse clicks as
win_mouse_() commands, and keystrokes as
During the recording, when you want to to perform text checks or waits, use
WinRunner's "Get Text - Area" button (
Later on, all of these recorded mouse or keyboard actions will later have to
be changed to the
multiple_win_mouse_ () commands and
commands; while the get_text () commands will have to be changed to
For bitmap checks, change the recorded commands to the
command. I have not thoroughly tested the bitmap wait function, but I think
that it should work fine. You might have to turn off the "Break on mismatch"
checkbox in the option menu, though, or else WinRunner will always pop up message
to inform you that the bitmap wait could not find the bitmap.
That's all you need in a nutshell. There are several other functions included in the module that I have not explained here, but I have provided descriptions and short examples for them in the module itself. If there's enough demand, or if I find enough free time, I'll try to put up a sample test script that everyone can use as a guide.
Any additional questions, feel free to email me.
All righty then. You can download the modules at the following location:
Tech Page @