Pages

Wednesday, March 9

Descriptive Programming in QTP - Part 2

Hello guys!
In Part-1 of this post, we discussed about Static DP. Let's look into Dynamic DP in this part.


Dynamic:


Second way to write DP is by using the Description object. This way also known as Programmatic Description. Description Object also do the same thing as static way do but there are some differences.

  • Description Object stores the properties and values of a particular object in an instance of that object. So it become easy to use it in the statement.
  • Description Object are used with ChildObjects (very useful method) of QTP.
  • It's more useful if you are using multiple properties to identify object. As you will use only instance name in your statement, your code looks more organized.
  • It's very handy if you are using index property for object identification (we'll discuss later)

Look into following line. It is DP statement, written by Static approach (as we discussed Part-1 of this post)

Browser(“name:=myBro”).page(“title:=myPage”).webbutton(“name:=Enter”,”type:= Submit”).click

Now let's write the same using Dynamic approach. We see that there are 3 objects in above statement i.e. Browser, Page, webbutton.

Now, first we need to create empty description objects. We'll create 3 object (1 for each object)

Dim oBrowser, oPage, oButton ' declaration is not mandatory but good practice!

Set oBrowser = Description.Create
Set oPage = Description.Create
Set oButton = Description.Create


Now we'll add identification properties & values to these objects.

oBrowser("name").value = "myBro"

oPage("title").value = "myPage"

oButton("name").value = "Enter"
oButton("type").value = "Submit"
oButton("x").value = "301"

And that's it! Our objects are now ready to use now. So, here we go...

Browser(oBrowser).page(oPage).webbutton(oButton).click


As we can see, we will write only the instance name (oButton) instead of all properties and values in statement. If you need to use same object multiple times in your code, your code will not become very lengthy!

Tedious?? I know! :)

Explore the following code to make the things clear...


  1. Browser("myBro”).page(“myPage”).webbutton(“Enter”).click - OR approach
  2. Browser(“name:=myBro”).page(“title:=myPage”).webbutton(“name:=Enter”,”type:= Submit”).click - Static DP.
  3. Browser(oBrowser).page(oPage).webbutton(oButton).click - Dynamic DP


First statement is written using OR approach. For this, objects must be stored in Object Repository.
Second statement is written using Static DP. All the properties are given directly in the code. Convenient!!
Third statement is written using Dynamic DP. You need to create a description for every object.

Please note that any statement can be written by combining all three ways!! Really?? Yesss!

Lets see how...

Browser("myBro").page(“title:=myPage”).webbutton(oButton).click

In above statement, we have used all 3 ways..

Browser - Object Repository
Page - Static DP
webbutton - Dynamic DP


Ohhh I see!!

Only point to take care here is that OR can't be used after DP.

Okey guys.. In next part of post, we'll discuss pros & cons of each way and other good stuff about DP.

In case of any queries, please post your comments.

33 comments:

  1. Nice work..waiting for next post!!

    ReplyDelete
  2. Its really a nice post!!!

    ReplyDelete
  3. Very helpful information!!! Thanks much.

    ReplyDelete
  4. it's a very nice post....thanks ,keep posting

    ReplyDelete
  5. it's very nice post... and very helpful. Thanks a lot

    ReplyDelete
  6. capturebitmap(fname.bmp), if i use this command and run second time i get error msg that file exists. what is the solution to avoid this and supply another file name dynamically.

    ReplyDelete
  7. Hi Admin,

    Its really nice content and very help.
    Can you please accommodate my below request.
    Can you please post any article in Webtable in QTP, all its methods and examples as you have mentioned in other articles.I hope this suggestion will come soon in post.

    Thanks.

    ReplyDelete
  8. Its really gives the difference between OR,Static & Dynamic which really helps to learn.Hope you ppl really giving the best materials.

    ReplyDelete
  9. Hi Madhu,

    Use the time stamp for the filename(unique for everytime) then u wont get the error.

    ReplyDelete
  10. Great articles...thanks for sharing

    ReplyDelete
  11. useful information...thanks

    ReplyDelete
  12. Excellent Stuff dude!!Got to learn a lot of useful info.Keep Posting abt QTP!!:)

    ReplyDelete
  13. hi.. i want to know that for login page of gmail also we will go for dyanamic DP or static programming?
    i know how to write static DP.. but have problem in dyanmic DP... if suppose we have so many users data in datatable then hw can i write using dyanamic DR.. pls write here ,,, thanks in adv

    ReplyDelete
  14. Excellent Stuff.....Got to learn a lot of useful info.Keep Posting abt QTP!!:)

    ReplyDelete
  15. Replies
    1. Hi Abhi, Am new to DP. Very nice to see your posts. Your explenation is very good. I want to know, where do you stay ...I want to learn directly from you. so that i can gain the knowledge even better.

      Delete
    2. By reading this blog, you are learning directly with me!! Happy to help if you have any question..

      Delete
  16. very good clearly explained the things

    ReplyDelete
  17. May god bless you. You are really doing great job!!

    ReplyDelete
  18. very clear explaination given.Thank you

    ReplyDelete
  19. Very good post..

    ReplyDelete
  20. very useful cleared many things....

    ReplyDelete
  21. @Pawan - thanks! Good to know that you like it.

    ReplyDelete
  22. great post indeed!!Thank you

    ReplyDelete
  23. Hi,

    I worked above concept on windows and my code is shown below,
    Dim oWindow, oButton ' declaration is not mandatory but good practice!

    Set oWindow = Description.Create

    Set oButton = Description.Create

    oWindow("text ").value = "Login"

    oButton("text").value = "OK"
    oButton("Class Name").value = "WinButton"
    oButton("x").value = "116"

    Dialog(oWindow).WinButton(oButton).click

    During execution i am getting below mentioned error message,

    "Cannot find the "[ WinButton ]" object's parent "[ Dialog ]" (class Dialog). Verify that parent properties match an object currently displayed in your application. "

    Please help me where i am going wrong

    ReplyDelete
  24. super se uper

    ReplyDelete
  25. I just need one clarification on one thing....
    Can we use multiple

    ReplyDelete
  26. I just need one clarification on one thing....
    Can we use multiple I HAVE SOME EXAMPLE OF THE JUSTDIAL SITE
    BUT HOW CAN WRITE THE SCRIPT THE DATA IS COPIED IN EXCEL SHEET PLEASE HELP FOR ME

    ReplyDelete
  27. Great information about QPT. Thanks for sharing such a helpful information.

    Best Mobility Services | Austere Technologies

    ReplyDelete