Blog to understand automation concepts in QTP, Selenium Webdriver and Manual Testing concepts

Useful VB Script Functions for QTP - String, Date, Array and Control flows

String Function:


Len: Returns the number of characters in a string or the number of bytes required to store a variable. 

Len(str)    
   

LCase:  Returns a string that has been converted to lowercase.


Ucase:  Returns a string that has been converted to uppercase.


Left: Returns a specified number of characters from the left side of a string.

Left(str,Length)

Right: Returns a specified number of characters from the right side of a string.

Right(str,Length)

Mid: Returns a specified number of characters from a string.

Mid(txt,start,[length])

Replace: Replaces string with another string

Replace(expression, find, replacewith[, start[, count[, compare]]])

Space: Returns a string consisting of the specified number of spaces.

Space (number)

Split: Returns a zero-based, one-dimensional array containing a specified number of substrings.

Split(expression[,delimiter[,count[,compare]]])

StrComp: Returns a value indicating the result of a string comparison. 

StrComp(string1,string2[,compare])

StrReverse: Returns a string in which the character order of a specified string is reversed.

strReverse(string)

LTrim; RTrim; and Trim: Returns a copy of a string without leading spaces (LTrim), trailing spaces (RTrim), or both leading and trailing spaces (Trim).

Trim(str)
LTrim(str)
RTrim(str)

InStr: Returns the position of the first occurrence of one string within another.

InStr([start,]string1,string2[,compare])

InStrRev: Returns the position of an occurrence of one string within another, from the end of string. 

InStrRev(string1,string2[,start[,compare]])

Array Functions:


IsArray: Returns a Boolean value indicating whether a variable is an array.

IsArray(variable)

UBound: Returns the largest available subscript for the indicated dimension of an array.

UBound(arrayname[,dimension])

Join - The Join function returns a string that consists of a number of substrings in an array.

Join(list[,delimiter])


Date Functions:

Date: Returns the current system date.

Time: Returns a Variant of subtype Date indicating the current system time.


DateAdd: Returns a date to which a specified time interval has been added. 

DateAdd (interval, number, date): internal can be ‘yyyy’, ‘dd’,’mm’


DateDiff: Returns the number of intervals between two dates. 

DateDiff("yyyy","September 01, 2012","September 01, 2010")



DatePart: Returns the specified part of a given date. 

DatePart("yyyy","May 01, 2012") 


Day: Returns a whole number between 1 and 31, inclusive, representing the day of the month. Day(date)


Month: Returns a whole number between 1 and 12, inclusive, representing the month of the year.


MonthName: Returns a string indicating the specified month.


Weekday: Returns a whole number representing the day of the week.  

Weekday ("November 03, 2010") 


WeekdayName: Returns a string indicating the specified day of the week. 

WeekdayName (4)


Year: Returns a whole number representing the year.


Hour: Returns a whole number between 0 and 23, inclusive, representing the hour of the day


Minute: Returns a whole number between 0 and 59, inclusive, representing the minute of the hour.


Second: Returns a whole number between 0 and 59, inclusive, representing the second of the minute. 


Now: Returns the current date and time according to the setting of your computer's system date and time.


Control Flows:

Do...Loop: Repeats a block of statements while a condition is True or until a condition becomes True.


For...Next Statement: For...Next: Repeats a group of statements a specified number of times.


For Each...Next: Repeats a group of statements for each element in an array or collection.


If...Then...Else: Conditionally executes a group of statements, depending on the value of an expression.


Select Case: Executes one of several groups of statements, depending on the value of an expression.


While...Wend: Executes a series of statements as long as a given condition is True.


With: Executes a series of statements on a single object.


Understanding Extern, Crypt and Environment Utility objects in QTP

In this post, We  will discuss about following utility objects in QTP.

Crypt Object
Environment Object
Extern Object


1. Crypt Object 


 Crypt object is used to encrypt the string. An encrypted string is generated for the provided string during Crypt.Encrypt method. This is useful for providing Password details and entering data in a field as setsecure.

Syntax : crypt.encrypt(strPass)


If we want to use this method through VBScript, we can create an instance of object using

Set crypt= CreateObject("Mercury.Encrypter")


2. Environment Object


Environment Object enables QTP to retrieve information  from the environment variables defined in QTP, Add new environment variables, and loading environment variables from external file.

Below are described the properties and method for Environment object.


Environment.value(EnvName) = EnvValue  will set the value of environment variable EnvName as EnvValue.


envVal = Environment.value(EnvName) will get the value of environment variable envName in variable envVal.


Environment.ExternalFileName will returns the ExternalFileName associated with the test.Will return “” if no externalfile is associated.


Environment.LoadFromFile(FileName) will load external user defined environment variables from the file specified.


3. Extern Object


By defining methods using extern object in QTP, we can call functions from external libraries. This is very useful to run functions from external DLL’s.

Using Extern Object

a. Declare Extern defintion

The syntax for declaring an extern object is as follows:

Extern.Declare micHwnd,UserProcedureName,DLLName,ProcedureinDLL, micString, micint


The above declaration declares user defined procedure UserProcedureName from procedure ProcedureinDLL in the DLL specified in DLLName. Next arguments are the datatype of various argument to be used when calling the procedure defined in extern.declare.


e.g : Extern.Declare micLong, "InternetOpen", "Wininet.dll", "InternetOpenA", micString, micDWord, micString, micString, micDWord will call InternetOpenA procedure from DLL  “Wininet.dll” on calling the method “InternetOpen”.Similarly other procedure from DLL can be declared using extern.declare.


b.Using procedure defined in Extern.declare

 Once we have defined the procedures using Extern.declare, we can call as shown below:

objIEOpen= Extern.InternetOpen("QTP_FTP", 1, vbNullChar, vbNullChar, 0).

Note we have to provide arguments with data type as defined during extern declaration above.
This will execute the procedure in DLL as specified in extern.declare.


QCUtil - utility object in QTP for QC- QTP intregration


In this tutorial, We will discuss about QCUtil - utility object in QTP for QC- QTP intregration. Will discuss various properties of QCUtil Object in this post. Hope this information is useful for QC-QTP integration.

QCUtil Object 

QCUtil Object is used to access QC OTA.
Below are the properties of QCUtil object that can be used for extracting information from QC.

Properties of QCUtil Object


1. QCUtil.CurrentRun:  This give reference to the current test run in QC.We can then get  information of currentrun  like name as shown below:


set objRun = QCUtil.CurrentRun
msgbox objRun.Name

2. QCUtil.CurrentTest: This give reference to the current test in QC. We can extract information like name of the test, adding attachment to current test using this property


set objTest = QCUtil.CurrentRun
msgbox objTest.Name

3. QCUtil.CurrentTestSet: This give reference to the current test set in QC. We can  extract information similar as above for testset using this property.


set CurrentTSTest = QCUtil.CurrentTestSet

4. QCUtil.CurrentTestSetTest: This gives reference to current test execution instance in the testset.


set CurrentTSTestSet = QCUtil.CurrentTestSetTest

5. IsConnected Property: returns true/false based on QTP currently connected to QC project.


blnQCsts = QCUtil.IsConnected

6. QCConnection Property: This gives an instance of current run session and can access the structure of QC using this property


Set QCConnection = QCUtil.QCConnection


Examples of working with QCUtil Object


1.Adding a defect in QC using QCUtil Object:


            ‘Create instance of QCConnection
            Set QCConnection = QCUtil.QCConnection
‘Create an instance of BugFactory
Set DefFactory = QCConnection.BugFactory
'Add a new defect
Set Bug = DefFactory.AddItem(Nothing)
‘Provide mandatory details for the defect
Bug.Status = “New”
Bug.Summary = “Module Detected new defect summary”
Bug.DetectedBy = “njoshi”
Bug.AssignedTo = “dev001”
Bug.Post
Set DefFactory = nothing
Set QCConnection = nothing.

2. Adding Attachment to QC 


Dim ObjCurrentTest,ObjAttch
‘ We can add attachment to currentTest, current run, testset, and testsettest by using repective ‘properties 
Set ObjTest = QCUtil.CurrentTest.Attachments
Set ObjAttachFile = ObjTest.AddItem(Null)
ObjAttachFile.FileName = FileName ‘ Provide path of the file that needs to be attached to QC 
ObjAttachFile.Type = 1
ObjAttachFile.Post
ObjAttachFile.Refresh

3. Validating If QC is connected properly: 


if QCUtil.IsConnected then
msgbox “QC is connected”
Else
Msgbox “QC is not connected”
EndIf
   

4. Connecting to QC through QTP


Set qtApp = CreateObject ("QuickTest.Application")
If  qtApp.launched <> True then
     qtApp.Launch
End If
qtApp.Visible = "true"
If Not qtApp.TDConnection.IsConnected Then
      qtApp.TDConnection.Connect QCurl, DomainName, ProjectName, UserName, Password, False
End If