Tuesday, April 21, 2009

DynamicDOM coming soon...

Modern software techniques and continuous revelations to the browser’s web rendering engines and DOM manipulation libraries, took website development to the new era. Working draft of HML 5.0 brought many new features to legacy markup language itself.

I being a member to the Automation community, many a time I faced questions from others regarding difficulties in getting the objects to perform test operations. Well there are many reasons why automation tool’s Native functionality sometimes really can’t help. Modern UI frameworks transforms simple web elements/controls to a rich looking controls and add extra functionalities e.g. using rich UI framework (javascript and css) converting a simple html select to Ajax autocomplete dropdown.

Sometimes People claims that there are no property which can be used to identify an objects,
Others asking me QTP doesn’t works with objects depending upon it runtime object properties or, WebRadioGroup is one of the examples which doesn’t works with “html id”.
QTP does identify objects depending upon its logical Test-Object Properties

Performing actions to multiple objects stored in object array is also not possible with automation tools without looping through array length. This increases code length, development time and increases script maintenance costs. Sometime it is also very difficult to guess how QTP will be going to behave with particular objects to identify there logical name which will help users to map there objects using Descriptive Programming in advance.

On the contrary DOM reads multiple objects having the same object properties and attributes and keeps them it into the array.

getElementsByClassName (userdefine)
getElementsByRegExp (userdefine)

Advantage of DynamicDom.

DynamicDom directly uses Dom to work with AUT, as soon as the user send command to Dom using domAction function, the framework elaborate function depending upon its parameter and create a dynamic Local method in Dom.

  • DynamicDom returns results as a string (Array v1.1, objects v1.2, object array v1.3)
  • DynamicDOM works locally to DOM so it avoid clashing AUI’s Native resources (functions/class/variables)
  • Logs actual DOM generated errors, helps users to debug there code.
  • Everything works under try-catch so it does not affect AUT’s functional structure.
  • True synchronization working with Ajax and testing ajax based application. (upcoming article on DynamicAjax with DynamicDOM)
  • DynamicDOM can do more and other things and Fastest way to work with objects comparison to OR and DP.
  • Tool independent framework (version 2.0)
Donwload is coming soon... so be connected :)


  1. Nice article... looking forward more from you

    Fedman ..

  2. hey Manish,
    download link is not working..


  3. Manish,
    you said "Tool independent framework" what does this mean ? when downlandable will come ?

  4. @Anonymous, currently there's no download link for DynamicDOM, it will come soon...

    @easy, "Tool independent framework" it should work without QTP, and can be used with other tool who all uses vbscript like syntax

  5. hi Manish,

    Right now i am working on Watir. It lacks in many areas like recovery, pop-up handling, object identification..... I solve these issues by running Vbscript's COM components. I am using AutoIT extensively in my scripts.

    In Watir i use IE developer tool bar to identify the objects. It really kills:-(

    After reading your article i believe your Dynamic DOM would be a boon to me. Please update your progress on QTP community.

    Thanks For your Efforts to the QTP oh sorry!!! to the Automation family..



  6. @Prince,
    Thanks for throwing your views on this writeup and appreciating my work, well Beta will available for download by maximum of next week currently its user instruction is not completed and it is also under whitebox...

    "In Watir i use IE developer tool bar to identify the objects. It really kills:-("

    why don't you try DebugBar(license is required for production use)
    but the best tool i have ever used is Firebug..
    - Manish

  7. Thanks Manish,

    For your Ideas. But our application supports IE only. So i cant use FireBug. I will download and use the trial version of DebugBar.


  8. Hi Manish,

    I am testing out your DynamicDOM on a new application we are building and I have a few questions.

    1. For instance, I can get the count of an object with a certain class name but when I try to place that into a variable so that I can do a for loop, it does not like the syntax. I do this all day long in other vbscripts I create. Is their a certain syntax I should be using for DynamicDOM.
    2. Also, how can I drill down tables in DynamicDOM? (ie. fireevents, etc)
    3. Lastly, I saw the udpates for DynamicDOM 2, how can I access it. Maybe that will help with some of my issues.

    Thanks in advance.