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. ×tamp=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 ×tamp=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×tamp=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=******×tamp=******", "", 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.