KBI 310208 Argent Defender Wildcards

Version

Argent Defender – All versions

Date

23 Aug 2010

Summary

Many websites utilize synthetic parameters in URLs to pass information from one URL to another.

The HTML source on these pages are generated dynamically, which means the link is not static — the link could change without warning, or it could even change every time the script is executed.

This means the static link you’re trying to click on in your recorded session isn’t going to be there the next time the script is run.

Technical Background

Synthetic URLs are designed to pass information, known as GET variables, to another page.

For example, if I wanted to pass my name and favourite color to another page, my link may look like this:

http://www.dummylink.com/index.asp?name=John&color=blue

Each GET variable is structured as {variable NAME} = {variable VALUE}. An ampersand (&) is used as a delimiter for the next variable.

While the example above is fairly mundane, the GET variables that cause the most trouble are those that constantly change.

Examples include:

   * Session IDs, e.g. &session_id=AB234CH57WUDI134YE

   * Timestamps, e.g. &timestamp=12385909841

The above examples may change everytime the page is refreshed, resulting in errors like this:


27 Jul 2010 18:47:43.718 SVR1 admin Error when finding element on web page

                                    'http://www.dummylink.com/checkout/

                                    cart.asp?session_id=AB234CH5

                                    &timestamp=12385909841'

Resolution

To get around the dynamic nature of these pages, you can use Argent Defender’s built-in wildcard — six asterisks (*).

As an example, instead of:


ImageClick  "href:http{0x3a)//www.dummylink.com/checkout/cart.asp

             ?session_id=AB234CH57WUDI134YE&timestamp=12385909841", "", 0

You substitute the suspected dynamic GET variables with six asterisks ******, like this:


ImageClick  "href:http{0x3a)//www.dummylink.com/checkout/cart.asp

            ?session_id=******&timestamp=******", "", 0

Argent Defender will automatically see this, and find the first available element on the page that matches the text pattern.

Note that the wildcard is ALWAYS six asterisks ****** — it doesn’t matter if the string you are trying to match has 1 character or 300 characters. It is always six asterisks.