Important Topics & Useful Scripts on QTP. Ask your QTP related questions at this id - asrajaputra@gmail.com
Sunday, November 22, 2009
Is VB Script Supports OOPS Concept . . .
To supports the OOPs concept, the script needs to be satisfy the OOPs principles.
OOPS Principles -
1.Encapsulation
2.Inheritance
3.Polymorphism
Lets write a script to satisfy each principle -
Encapsulation - The wrapping of data and function into a single unit (Called class) is known as Encapsulation.
Example -
Class Maths
Function add(a,b)
MsgBox "Sum = "&a+b
End Function
End Class
Set Mat=New Maths
res=Mat.add (2,3)
'************************************************************************************
Inheritance - It is the process by which object of one class acquire the properties of object of another class.
'Example -
Class Outer
Function test()
Set inn= New Inner
inn.display
End Function
End Class
Class Inner
Function display()
MsgBox "This is inner class"
End Function
End Class
Set out=New Outer
out.test()
'************************************************************************************
'Polymorphism - Polymorphism means the ability to take more than one form/methods
Example -
Dim idno, name, marks
Class Student
Function SetData()
idno="10"
name="arun"
marks="300"
End Function
Function getData()
MsgBox "Idno "&idno
MsgBox "Name "&name
MsgBox "Marks "&marks
End Function
End Class
Class Student2
Function SetData(a,s,m)
idno=a
name=s
marks=m
End Function
End Class
Set Std1=New Student
std1.SetData()
std1.getData()
Set std2=New Student2
std2.SetData "12","Singh","400"
std1.getData()
I am trying to say Yes, it supports OOPS concept. But if any body is having any questions or my assumption is wrong then please post here as a comments.
*************************************************************************************
Sunday, July 5, 2009
How to Click on Dinamic Links
'*******************************************************************
Set TblObj=Browser( BrowserProp) .Page(PageProp) .WebTable( TableProp)
r_Count=TblObj. RowCount
For r=1 to r_Count
c_Count=TblObj. ColumnCount( r)
For c=1 to c_Count
chItems_Count= TblObj.ChildItem Count(r,c, "Link")
For ItemIndex=0 to chItems_Count- 1
Set ch_Item=TblObj. ChildItem( r,c,"Link" ,ItemIndex)
Print ch_Item.object. title
ch_Item.click
' Specify the required operations after clicking on link
' Make sure that again you should navigate to the same page to get other links tooltip
'Or to click on other Links
Next
Next
Next
'**********************************************************************
Monday, May 18, 2009
How To Run QTP Scripts at Scheduled Time?
There can be situations when you need to schedule your QTP scripts so that they can run when you are not present in front of you PC. I will show you a demo below -
1) Create a .vbs fild to launch QTP with requiresd settings, add-ins etc.\\
Here is a sample vbs code
Set App = CreateObject("QuickTest.Application")
App.Launch
App.Visible = True
App.WindowState = "Maximized"
App.ActivateView "ExpertView"
App.open "C:\Program Files\Mercury Interactive
\QuickTest Professional\Tests\Test1", False
'Opens the test in editable mode
2) OK, for the first timers. Create a sample QTP test and save it as Test1 at the location above. Copy the code into notepad and name the file as testing.vbs3) Now we will automate the opening of vbs file through windows scheduyler. Go to Start > Control Panel > Schedule Tasks > Click Add Schedule Tasks Click Next on the Screen
4) Click Browse and select the .vbs file you just created. You will ge this screen.
5) Give a name to the task and select the frequence for performing the
given tasks. For this demo we will select "One time only"
6) Select Start Time and Start Date. For this demo, select Start Time as current time+5 mins and Start date as today date.
7) Next Screen Enter "UserNAme", "Password" and "Confirm Password"
Click Next and you should get this screen.
8) Click on Finish, you're done.
Environment Variables
Environment variables in QTP are like global variables in other programming languages which can be accessed through any part of the script. The values of these variables remains same irrespective of the number of iterations (unless you change them through scripting). These variables can prove to be very useful when you want a variable to be shared across various reusable actions.
There are two types of environment variables:
- Built-In: These are the internal variables that are provided by QTP. Among others they can provide you valuable information like the path of the folder where test is located, the path of the results folder, the name of the action iteration or the OS version. So, how can we access the built in environment variable? It’s simple, just have a look at screenshot. So if you want to know the OSVersion of the operating system where your test is running. You can simply type in Environment.Value(“OSVersion”)
- User-Defined: These can be further defined into two types.
- User defined Internal
- These are the variables that we define within the test.
- These variables are saved with the test and are accessible only within the test in which they were defined.
- So how can we define and use them?
To define them: Environment.Value(”name”)= “Rajaputra”
To call them: msgbox Environment.Value(”name”)
- User defined External
- These are the variables that we predefine in the active external environment variables file.
- These can be created using a list of variable-value pairs in an external file in .xml format. This is a topic of a separate post that we will discuss later.
We can use environment variables in a number of ways:
1) When you want a global variable that is needed throughout the test run (across all your reusable actions).
2) When you see that one reusable action in a script is dependent on the others. You might want to use them
3) When you need to reference the current “test directory” irrespective of the location where it is stored.
- User defined Internal
Environment Variables
- Built-In: These are the internal variables that are provided by QTP. Among others they can provide you valuable information like the path of the folder where test is located, the path of the results folder, the name of the action iteration or the OS version. So, how can we access the built in environment variable? It’s simple, just have a look at screenshot. So if you want to know the OSVersion of the operating system where your test is running. You can simply type in Environment.Value(“OSVersion”)
- User-Defined: These can be further defined into two types.
- User defined Internal
- These are the variables that we define within the test.
- These variables are saved with the test and are accessible only within the test in which they were defined.
- So how can we define and use them?
To define them: Environment.Value(”name”)= “Rajaputra”
To call them: msgbox Environment.Value(”name”)
- User defined External
- These are the variables that we predefine in the active external environment variables file.
- These can be created using a list of variable-value pairs in an external file in .xml format. This is a topic of a separate post that we will discuss later.
We can use environment variables in a number of ways:
1) When you want a global variable that is needed throughout the test run (across all your reusable actions).
2) When you see that one reusable action in a script is dependent on the others. You might want to use them
3) When you need to reference the current “test directory” irrespective of the location where it is stored.
- User defined Internal
Excel Automation
'To Open a Microsoft Excel application with default new work book
Function CreateExcel()
Dim excelSheet
Set ExcelApp = CreateObject("Excel.Application") 'Create a new Microsoft Excel object
ExcelApp.Workbooks.Add
ExcelApp.Visible = True
Set CreateExcel = ExcelApp
End Function
'To Close the given Microsoft Excel document
Sub CloseExcel(ExcelApp)
Set excelSheet = ExcelApp.ActiveSheet
Set excelBook = ExcelApp.ActiveWorkbook
Set fso = CreateObject("Scripting.FileSystemObject")
On Error Resume Next
fso.CreateFolder "C:\Temp"
fso.DeleteFile "C:\Temp\ExcelExamples.xls"
excelBook.SaveAs "C:\Temp\ExcelExamples.xls"
ExcelApp.Quit
Set ExcelApp = Nothing
Set fso = Nothing
Err = 0
On Error GoTo 0
End Sub
'The SaveWorkbook method saves a workbook according to the workbook identifier.
'The method overwrites the previously saved file in the given path.
'excelApp - a reference to the Microsoft Excel application
'workbookIdentifier - The name or number of the requested workbook
'path - The location to which the workbook should be saved
'Returns "OK" on success and "Bad Workbook Identifier" on failure
Function SaveWorkbook(ExcelApp, workbookIdentifier, path) 'As String
Dim workbook 'As Excel.workbook
On Error Resume Next
Set workbook = ExcelApp.Workbooks(workbookIdentifier)
On Error GoTo 0
If Not workbook Is Nothing Then
Set fso = CreateObject("Scripting.FileSystemObject")
'If the path has no file extension then add the 'xls' extension
If InStr(path, ".") = 0 Then
path = path & ".xls"
End If
On Error Resume Next
fso.DeleteFile path
Set fso = Nothing
Err = 0
On Error GoTo 0
workbook.SaveAs path
SaveWorkbook = "OK"
Else
SaveWorkbook = "Bad Workbook Identifier"
End If
End Function
'The SetCellValue method sets the given 'value' in the cell which is identified by
'its row, column, and parent Microsoft Excel sheet
'excelSheet - The Microsoft Excel sheet that is the parent of the requested cell
'row - the cell's row in the excelSheet
'column - the cell's column in the excelSheet
'value - the value to be set in the cell
Sub SetCellValue(excelSheet, row, column, value)
On Error Resume Next
excelSheet.Cells(row, column) = value
On Error GoTo 0
End Sub
'The GetCellValue returns the cell's value according to its row, column, and sheet
'excelSheet - The Microsoft Excel sheet in which the cell exists
'row - The cell's row
'column - The cell's column
'return 0 if the cell cannot be found
Function GetCellValue(excelSheet, row, column)
value = 0
Err = 0
On Error Resume Next
tempValue = excelSheet.Cells(row, column)
If Err = 0 Then
value = tempValue
Err = 0
End If
On Error GoTo 0
GetCellValue = value
End Function
'The GetSheet method returns a Microsoft Excel sheet according to the sheet Identifier
'ExcelApp - The Microsoft Excel application which is the parent of the requested sheet
'sheetIdentifier - The name or the number of the requested Microsofr Excel sheet
'return Nothing on failure
Function GetSheet(ExcelApp, sheetIdentifier) 'As Excel.worksheet
On Error Resume Next
Set GetSheet = ExcelApp.Worksheets.Item(sheetIdentifier)
On Error GoTo 0
End Function
'The InsertNewWorksheet method inserts a new worksheet into the active workbook or
'the workbook identified by the workbookIdentifier. The new worksheet will get a default
'name if the sheetName parameter is empty, otherwise the sheet has the sheetName
'as its name.
'Return - The new sheet as an object
'ExcelApp - The Microsoft Excel application object into which the new worksheet should be added
'workbookIdentifier - An optional identifier of the worksheet into which the new worksheet should be added
'sheetName - The optional name of the new worksheet.
Function InsertNewWorksheet(ExcelApp, workbookIdentifier, sheetName) 'As Excel.worksheet
Dim workbook 'As Excel.workbook
Dim worksheet 'As Excel.worksheet
'If the workbookIdentifier is empty, work on the active workbook
If workbookIdentifier = "" Then
Set workbook = ExcelApp.ActiveWorkbook
Else
On Error Resume Next
Err = 0
Set workbook = ExcelApp.Workbooks(workbookIdentifier)
If Err <> 0 Then
Set InsertNewWorksheet = Nothing
Err = 0
Exit Function
End If
On Error GoTo 0
End If
sheetCount = workbook.Sheets.Count
workbook.Sheets.Add , sheetCount
Set worksheet = workbook.Sheets(sheetCount + 1)
'If the sheetName is not empty, set the new sheet's name to sheetName
If sheetName <> "" Then
worksheet.Name = sheetName
End If
Set InsertNewWorksheet = worksheet
End Function
'The RenameWorksheet method renames a worksheet'
'ExcelApp - The Microsoft Excel application that is the worksheet's parent
'workbookIdentifier - The worksheet's parent workbook identifier
'worksheetIdentifier - The worksheet's identifier
'sheetName - The new name for the worksheet
Function RenameWorksheet(ExcelApp, workbookIdentifier, worksheetIdentifier, sheetName) 'As String
Dim workbook 'As Excel.workbook
Dim worksheet 'As Excel.worksheet
On Error Resume Next
Err = 0
Set workbook = ExcelApp.Workbooks(workbookIdentifier)
If Err <> 0 Then
RenameWorksheet = "Bad Workbook Identifier"
Err = 0
Exit Function
End If
Set worksheet = workbook.Sheets(worksheetIdentifier)
If Err <> 0 Then
RenameWorksheet = "Bad Worksheet Identifier"
Err = 0
Exit Function
End If
worksheet.Name = sheetName
RenameWorksheet = "OK"
End Function
'The RemoveWorksheet method removes a worksheet from a workbook
'ExcelApp - The Microsoft Excel application that is the worksheet's parent
'workbookIdentifier - The worksheet's parent workbook identifier
'worksheetIdentifier - The worksheet's identifier
Function RemoveWorksheet(ExcelApp, workbookIdentifier, worksheetIdentifier) 'As String
Dim workbook 'As Excel.workbook
Dim worksheet 'As Excel.worksheet
On Error Resume Next
Err = 0
Set workbook = ExcelApp.Workbooks(workbookIdentifier)
If Err <> 0 Then
RemoveWorksheet = "Bad Workbook Identifier"
Exit Function
End If
Set worksheet = workbook.Sheets(worksheetIdentifier)
If Err <> 0 Then
RemoveWorksheet = "Bad Worksheet Identifier"
Exit Function
End If
worksheet.Delete
RemoveWorksheet = "OK"
End Function
'The CreateNewWorkbook method creates a new workbook in the Microsoft Excel application
'ExcelApp - The Microsoft Excel application to which an new Microsoft Excel workbook will be added
Function CreateNewWorkbook(ExcelApp)
Set NewWorkbook = ExcelApp.Workbooks.Add()
Set CreateNewWorkbook = NewWorkbook
End Function
'The OpenWorkbook method opens a previously saved Microsoft Excel workbook and adds it to the Application
'excelApp - The Microsoft Excel application to which the workbook will be added.
'path - The path of the workbook that will be opened
'Returns Nothing on failure
Function OpenWorkbook(ExcelApp, path)
On Error Resume Next
Set NewWorkbook = ExcelApp.Workbooks.Open(path)
Set OpenWorkbook = NewWorkbook
On Error GoTo 0
End Function
'The ActivateWorkbook method sets one of the workbooks in the application as the active workbook
'ExcelApp - The workbook's parent Microsft Excel application
'workbookIdentifier - The name or the number of the workbook
Sub ActivateWorkbook(ExcelApp, workbookIdentifier)
On Error Resume Next
ExcelApp.Workbooks(workbookIdentifier).Activate
On Error GoTo 0
End Sub
'The CloseWorkbook method closes an open workbook
'ExcelApp - The parent Microsoft Excel application of the workbook
'workbookIdentifier - The name or the number of the workbook
Sub CloseWorkbook(ExcelApp, workbookIdentifier)
On Error Resume Next
ExcelApp.Workbooks(workbookIdentifier).Close
On Error GoTo 0
End Sub
'The CompareSheets method compares two sheets.
'If there is a difference between the two sheets then the value in the second sheet
'will be changed to red and contain the string:
'Compare conflict - Value was 'Value2', Expected value is 'value2'"
'sheet1, sheet2 - The Microsoft Excel sheets to be compared
'startColumn - The column to start comparing in the two sheets
'numberOfColumns - The number of columns to be compared
'startRow - The row to start comparing in the two sheets
'numberOfRows - The number of rows to be compared
Function CompareSheets(sheet1, sheet2, startColumn, numberOfColumns, startRow, numberOfRows, trimed) 'As Boolean
Dim returnVal 'As Boolean
returnVal = True
'If one of the sheets does not exist, do not continue the process
If sheet1 Is Nothing Or sheet2 Is Nothing Then
CompareSheets = False
Exit Function
End If
'Loop through the table and fill values into the two worksheets
For r = startRow to (startRow + (numberOfRows - 1))
For c = startColumn to (startColumn + (numberOfColumns - 1))
Value1 = sheet1.Cells(r, c)
Value2 = sheet2.Cells(r, c)
'If 'trimed' equals True then user wants to ignore blank spaces
If trimed Then
Value1 = Trim(Value1)
Value2 = Trim(Value2)
End If
'if the values of a cell are not equal in the two worksheets
'create an indicator that the values are not equal and set the return value
'to False
If Value1 <> Value2 Then
Dim cell 'As Excel.Range
sheet2.Cells(r, c) = "Compare conflict - Value was '" & Value2 & "', Expected value is '" & Value1 & "'."
Set cell = sheet2.Cells(r, c)
cell.Font.Color = vbRed
returnVal = False
End If
Next
Next
CompareSheets = returnVal
End Function
'***********************************************
'Main Script which calls all above the functions.
Dim ExcellApp 'As Excel.Application
Dim excelSheet1 'As Excel.worksheet
Dim excelSheet2 'As Excel.worksheet
Set ExcelApp = CreateExcel()
'Create a workbook with two worksheets
ret = RenameWorksheet(ExcelApp, "Book1", "Sheet1", "Example1 Sheet Name")
ret = RenameWorksheet(ExcelApp, "Book1", "Sheet2", "Example2 Sheet Name")
'Save as the workbook under a different name
ret = SaveWorkbook(ExcelApp, "Book1", "E:\Example1.xls")
'Fill the worksheets
Set excelSheet1 = GetSheet(ExcelApp, "Example1 Sheet Name")
Set excelSheet2 = GetSheet(ExcelApp, "Example2 Sheet Name")
For column = 1 to 10
For row = 1 to 10
SetCellValue excelSheet1, row, column, row + column
SetCellValue excelSheet2, row, column, row + column
Next
Next
'Compare the two worksheets
ret = CompareSheets(excelSheet1, excelSheet2, 1, 10, 1, 10, False)
If ret Then
MsgBox "The two worksheets are identical"
End If
'Change the values in one sheet
SetCellValue excelSheet1, 1, 1, "Yellow"
SetCellValue excelSheet2, 2, 2, "Hello"
'Compare the worksheets again
ret = CompareSheets(excelSheet1, excelSheet2, 1, 10, 1, 10, True)
If Not ret Then
MsgBox "The two worksheets are not identical"
End If
'Save the workbook by index identifier
SaveWorkbook ExcelApp, 1, ""
'Close the Microsoft Excel application
CloseExcel ExcelApp
Monday, February 2, 2009
How to add two dollar amounts
amount1 = inputbox("Enter the first dollar amount")
''''''Enter the amount with $ symbol Ex - $ 2000
amount2 = inputbox("Enter the second dollar amount")
'''''Enter the amount with $ symbol Ex - $ 3000
lnt1=len (amount1)
'To get the length of the dollar amount
lnt2=len(amount2)
' To get the length of the dollar amount
aamount1 = Right(amount1,lnt1-1)
'''''' To remove the dollar symbol and get the actual amount
aamount2= Right(amount2,lnt2 - 1)
''''''To remove the dollar symbol and get the actual amount
msgbox Cint(aamount1)+Cint(aamount2)
Wednesday, January 14, 2009
Search for a word and replace the word with a new word then save as a different file name
################################################################
Set Word = CreateObject("Word.Application")
Word.Visible = TRUE
Set WordDoc=Word.Documents.Open ("C:\Greetings.doc")
Do
With Word.Selection.Find
.Text = "Good"
.Replacement.Text = "Bad"
.Forward = True
.wrap=1
.Format = False
.MatchWholeWord = True
End With
Word.Documents.Application.Selection.Find.Execute
If Word.Selection.Find.Found Then
Word.Selection.Range="bad"
else
Exit Do
End If
Loop
WordDoc.SaveAS "C:\BadGreetings.doc"
QTP VB Script Trainings
QTP Shortcut Keys
Polish Your Skills For QTP Interview In MNC's
How to Implement Keyword Driven Methodology in QTP
Sunday, January 11, 2009
Script for adding and ramoving Object repository to an action
Function AddRepositorytoCurrentAction(RepPath)
Dim qtApp,qtRepositories, actName
actName=Environment.Value("ActionName")
Set qtApp = CreateObject("QuickTest.Application")
Set qtRepositories = qtApp.Test.Actions(actName).ObjectRepositories
If qtRepositories.Find(RepPath) = -1 Then
qtRepositories.Add RepPath, 1
End If
If rmvPosition<> -1 Then
Reporter.ReportEvent micPass,"Adding Object Repository","Object Repository is Succesfully Added to the Action "&actName
else
Reporter.ReportEvent micFail,"Adding Object Repository","Object Repository is not Added to the Action "&actName
End If
qtApp= Nothing
qtRepositories= Nothing
'Remove repository from an action
Function RemoveRepositoryfromCurrentAction(RepPath)
actName=Environment.Value("ActionName")
Set qtApp = CreateObject("QuickTest.Application")
Set qtRepositories = qtApp.Test.Actions(actName).ObjectRepositories
rPosition=qtRepositories.Find(RepPath)
qtRepositories.Remove rPosition
rmvPosition=qtRepositories.Find(RepPath)
If rmvPosition= -1 Then
Reporter.ReportEvent micPass,"Removing Object Repository","Object Repository is Succesfully Removed From the Action "&actName
else
Reporter.ReportEvent micFail,"Removing Object Repository","Object Repository is not Removed From the Action "&actName
End If
qtApp= Nothing
qtRepositories= Nothing
End Function
To get the tool tip of the Link
msgbox l_ToolTip
This statement will bring the tooltip of a link.
How to click on Dynamic Links
'########### ######### ######### ######### ######### ######### #########
Set TblObj=Browser( BrowserProp) .Page(PageProp) .WebTable( TableProp)
r_Count=TblObj. RowCount
For r=1 to r_Count
c_Count=TblObj. ColumnCount( r)
For c=1 to c_Count
chItems_Count= TblObj.ChildItem Count(r,c, "Link")
For ItemIndex=0 to chItems_Count- 1
Set ch_Item=TblObj. ChildItem( r,c,"Link" ,ItemIndex)
Print ch_Item.object. title
ch_Item.click
' Specify the required operations after clicking on link
' Make sure that again you should navigate to the same page to get other links tooltip
'Or to click on other Links
Next
Next
Next
'########### ######### ######### ######### #########
How to use Classes in QTP
Before going to that we will discuss about using functions in QTP.
If there is a function in our script like this
'*********** ********* ********* ********* ********* ********* **
Function Demo(a,b)
demo=a+b
End Function
'*********** ********* ********* ********* ********* ********* **
This is a function to add two numbers.
To call this function we write
'*********** ********* *****
val=demo(2,3)
msgbox val
'*********** ********* *****
We can store the functions in library files (.vbs) and to use this function, Library should be associated to the QTP Test or library file should be executed by QTP Test using ExecuteFile statement.
This means we can use the functions which are written in QTP Script or in Library files by associating it or by executing it.
But this is not possible when using classes in our QTP Test. If we want to use a class which is there in the libraryfile its mandotory that the library should be executed using Executefile statement.
Classes will not work which are there in associated libraries. Here is an example...
'*********** ********* ********* ********* ********* **
Class Maths
Function Add1(a,b)
add1=a+b
End Function
Function sub1(a,b)
sub1=a-b
End Function
End Class
'*********** ********* ********* ********* ********* **
If the above code is there with in the test script then the usage of this class will be like this
'*********** ********* ********* ********* ********* **
Set mat=New Maths
val=mat.add1( 2,3)
msgbox val
'*********** ********* ********* ********* ********* **
If the class code is there with in the library file then the usage of this class will be like this
'*********** ********* ********* ********* ********* **
ExecuteFile (Library Path)
Set mat=New Maths
val=mat.add1( 2,3)
msgbox val
'*********** ********* ********* ********* ********* **
This class will not work If you just associate the library with in the
File--> Settings --> Resources
But there is a way of using the classes even though if it is in associated library.
First Method:
Where ever the class is declared in the library it self create the class instance and use it in your qtp script.
'*********** ********* ********* ********* ********* **
Set mat=New Maths
Class Maths
Function Add1(a,b)
add1=a+b
End Function
Function sub1(a,b)
sub1=a-b
End Function
End Class
'*********** ********* ********* ********* ********* **
To Use this class
'*********** ********* *
val=mat.add1( 2,3)
msgbox val
'*********** ********* *
Second Method:
Create a function which is returning class object by creating instance of the class.
'*********** ********* ********* ********* ********* **
Function mat()
Set mat=New Maths
End Function
Class Maths
Function Add1(a,b)
add1=a+b
End Function
Function sub1(a,b)
sub1=a-b
End Function
End Class
'*********** ********* ********* ********* ********* **
To Use this class
'*********** ********* *
Set mth=mat ' mat is a function which will return the class instance
val=mth.add1( 2,3)
msgbox val
'*********** ********* *
About Me
- RAJAPUTRA
- Hi all,I am Arun Singh Rajaputra. I am working as a Project Lead in a reputed organization in Hyderabad, AP, India. I have little bit knowledge on Quick Test Professional and like to share my knowledge to all through this blog.