Sunday, June 15, 2008

QTP Tutorials 13 - Regular Expression

Objects and text strings with varying (changeable) values or we can say dynamic values can be identified by QuickTest using Regular expressions.


Regular expressions can be used:

  • To define property values of an object.
  • To parameterize a step.
  • To create a checkpoint with changeable values.

Important points regarding Regular expressions:


You can use regular expressions only for values of type string.


When any special character in a regular expression is preceded by a backslash (\), QuickTest searches for the literal character.


You can define a regular expression for a constant value, a Data Table parameter value, an Environment parameter value, or a property value in a programmatic description.


For more common options to create Regular Expressions, see QTP User Guide.


Instead of writing more about QTP regular expressions, lets quickly jump to examples.


Below you will find examples.


QTP Regular Expression Example 1



[This is just an example using Yahoo mail inbox. Your inbox unread mails may differ from the one shown in this example]


1. Launch QTP and open a new test.
2. Open Internet Explorer.
[Now we have QTP with a blank test and Google open.]
3. Click on Record in order to start recording.
4. Copy and paste this URL (http://mail.yahoo.com) in the browser's address bar to open Yahoo mail login.
5. Type your user name and password to login to Yahoo mail.
6. When Yahoo mail is open, click on the Inbox link as shown in the screenshot below.[ Note: The Inbox can contain any number of mails. At any given point of time, Inbox(5) means 5 unread mails]
7. Click on Stop in order to stop recording. Then my recorded code looks like this:


Browser("Browser").Page("Page").Sync
Browser("Browser").Navigate "https://login.yahoo.com/config/login_verify2?&.src=ym"
Browser("Browser").Page("Yahoo! Mail: The best").WebEdit("login").Set "piyush
Browser("Browser").Page("Yahoo! Mail: The best").WebEdit("passwd").SetSecure "4801a2cbf793b46aad67194b5cbc961c091f"
Browser("Browser").Page("Yahoo! Mail: The best").WebButton("Sign In").Click
Browser("Browser").Page("Yahoo! Mail - piyush@yahoo.com").Link("Inbox (6)").Click


Now if you don't check any mail in your inbox and log out and then again run this code it will work fine.


But if you check any mail like if I check one mail in my inbox then it will be Inbox(5), then if I run this code it will fail because the link has changed from Inbox(6) to Inbox(5) and shows the below mentioned error.


"Cannot identify the object Inbox(6) (of class Link). Verify that this object`s properties match an object currently displayed in your application."


Now we will change the above code with the help of regular expression so that it will work even if there is only one unread mail.


In QTP go to Resources (menu) ->Object Repository.


Object Repository window will open. Select the object "Inbox(6)". Click on the label Inbox(6) inside Value column and then click on "<=>" button which will appear.


When you click on the button, it will open 'Value Configuration Options' window. On this window click on Regular Expression check box. When you click on checkbox it will show warning . Just click on Yes.


Now in the Constant text box inside the displayed window( what I have entered "Inbox \([5-6]\)" and click Ok and close Object Repository window.


This Regular Expression setting which we have done works for inbox unread mails between 5 and 6 e.g. if your inbox says inbox(5) or inbox(6).


Run the test. It passes for me because I had 5 unread mails in my inbox (inbox(5)).


You can do this setting according to your convenience e.g. [1-5] for unread mails between 1 and 5 and so on.

7 comments:

Anonymous said...

useful site with good examples

nagender said...

good one

kknagender said...

gud one

quicky said...

This site is very helpful with great examples to learn basics.

Anonymous said...

great job...

Priya said...

This website is very useful for me to know abt QTP thank you

Waheed Abbas said...

this site is really nice for beginners