Micro Focus UFT\
QTP Learnings, Challenges and Findings
''#######################################################################
''#
Version 1.0 Dated 28/10/2011
''#
Version 1.1 Dated 10/12/2011
''#
Version 1.2 Dated 28/12/2011
''#######################################################################
1.
TD80 folder to be cleared when we use QC with QTP.
2. Try
to avoid using
SwfWin("regexpwntitle").value
= "XXXABC 100 Asset Inventory"'
Regexpwntitle
property in your code.... It might get clash with other object
property
3.
Notepad++ to check for the duplication, using compare option
4.
Check for Menu Enable and Disable:
''#######################################################################
To
Check the CheckOutAsset(s) is enable or disable in Menus
Window(Fwindow).Activate
VerifyHotKeys(
"%Oc")
‘VerifyHotKeys(
"{Enter}")
Set
ChkOutAssWin = Description.Create
ChkOutAssWin("Class
Name").value = "SwfWindow"
ChkOutAssWin("swfname").value
= "CheckOutAssetForm"
Set
ChkOutAssBut = Description.Create
ChkOutAssBut("Class
Name").value = "SwfButton"
ChkOutAssBut("swfname").value
= "btnCancel"
If
SwfWindow(ChkOutAssWin).Exist Then
Reporter.ReportEvent
micPass, "Check Out Asset(s) is Enabled", ""
'======
SwfWindow(ChkOutAssWin).Activate
Dim
ChTxt1
ChTxt1
=SwfWindow(ChkOutAssWin).SwfButton(ChkOutAssBut).GetROProperty("Text")
Chactual
= "&Cancel"
Reporter.ReportEvent
micPass, "Actual Value :"+Chactual,"Expected Value
:"+ChTxt1
SwfWindow(ChkOutAssWin).SwfButton(ChkOutAssBut).Type
micAltDwn + "C" + micAltUp
'=======
Else
'It should be Failed but we are checking for the <Check out
Assets > is Disable by micPass
Reporter.ReportEvent
micPass, "Check Out Asset(s) is Disabled", ""
End
If
'#######################################################################'
To close the application
Window(Fwindow).Activate
VerifyHotKeys(
"%FX")
‘ VerifyHotKeys(
"{Enter}")
''#######################################################################
'Hotkey
Verifications
Public
Function VerifyHotKeys(Keytopress)
Set
WshShell = CreateObject("WScript.Shell")
WshShell.SendKeys
Keytopress
Set
WshShell = nothing
End
Function
''#######################################################################
5.
Dropdown Selection
a).
FC1=SwfWindow("XXXABC
100 Asset Accounting").SwfWindow("XXXABC 100 Asset
Accounting").SwfObject("FieldCombo").Object.ListBox.FindStringExact(DataTable("LookIn",dtLocalSheet))
SwfWindow("XXXABC
100 Asset Accounting").SwfWindow("XXXABC 100 Asset
Accounting").SwfObject("FieldCombo").Object.ListBox.SetSelected
FC1,True
b).
Selecting
a value from dropdown list.
Per=SwfWindow("XXXABC
100 Asset Accounting").SwfWindow("XXXABC 100 Asset
Accounting").SwfObject("FieldCombo").Object.ListBox.FindStringExact("1st
Year Business Use %")
SwfWindow("XXXABC
100 Asset Accounting").SwfWindow("XXXABC 100 Asset
Accounting").SwfObject("FieldCombo").Object.ListBox.SetSelected
Per,True
SwfWindow("XXXABC
100 Asset Accounting").SwfWindow("XXXABC 100 Asset
Accounting").Activate
UpDown
Public
Function UpDown
VerifyHotKeysTab("{UP}")
VerifyHotKeysTab("{DOWN}")
End
Function
Public
Function VerifyHotKeysTab(keytopress)
Set
WshShell = CreateObject("WScript.Shell")
WshShell.SendKeys
keytopress
Set
WshShell = nothing
End
Function
6.
i. Check – Check box and ii. Uncheck – Check box.
‘Functions
for selecting multiple Checkbox can be selected.
SlctChkBox
DataTable("RprtDef_Books",dtLocalSheet)
SlctChkBox(ChkBox)
Public
Function SlctChkBox(ChkBox)
ChkBox = Split(ChkBox,",")
For i = 0 To UBound(ChkBox)
SwfWindow("XXXABC 100 Asset
Accounting").SwfObject("Tax").SetTOProperty "text",
Trim(ChkBox(i))
If SwfWindow("XXXABC 100 Asset
Accounting").SwfObject("Tax").GetROProperty("checked")
<> "True" Then
SwfWindow("XXXABC 100 Asset
Accounting").SwfObject("Tax").Click
End If
Next
End
Function
‘Unchk
chkbox
‘Functions
where multiple Checkbox can be Unselected.
UnSlctChkBox
DataTable("RprtDef_Books",dtLocalSheet)
UnSlctChkBox(ChkBox)
Public
Function UnSlctChkBox(ChkBox)
ChkBox = Split(ChkBox,",")
For i = 0 To UBound(ChkBox)
SwfWindow("XXXABC 100 Asset
Accounting").SwfObject("Tax").SetTOProperty "text",
Trim(ChkBox(i))
If SwfWindow("XXXABC 100 Asset
Accounting").SwfObject("Tax").GetROProperty("checked")
<> "False" Then
SwfWindow("XXXABC 100 Asset
Accounting").SwfObject("Tax").Click
End If
Next
End
Function
7.
Grid info
Window(oMainWinobj).SwfWindow(oChldWinobj).SwfObject("Class
Name:=SwfObject","swfname:=GroupViewGrid").Click
Window(oMainWinobj).SwfWindow(oChldWinobj).SwfObject("Class
Name:=SwfObject","swfname:=GroupViewGrid").Type
micAltDwn + "s" + micAltUp
ActValue
= Trim(Window(oMainWinObj).SwfWindow(oChldWinobj).SwfObject("Class
Name:=SwfObject","swfname:=BookInfoGrid").Object.GetViewStyleInfo(18,2).CellValue)
print
actvalue
Set
objExcel = CreateObject("Excel.Application")
Set
objWorkbook = objExcel.WorkBooks.Open("C:\Documents and
Settings\Administrator\Desktop\Sample.xls")
Set
objSheet = objWorkbook.Worksheets("TestData")
ExpValue=objSheet.Range("C2").Value
If
(ActValue=ExpValue)Then
Reporter.ReportEvent
micPass, "Depreciation Calulated","Correct Answer"
Print
"PASS"
Else
Reporter.ReportEvent
micFail, "Depreciation Calulated","Wrong Answer"
Print
"FAIL"
End
If
8.
ExtendSelect for list box
Dim
MyString, MyArray
MyString
= DataTable("Companies_list", dtLocalSheet)
msgbox
MyString
MyArray
= Split(MyString, ",")
Window("XXXABC
100 Asset Accounting").Dialog("XXXABC 100 Asset
Accounting").WinList("Companies:").Select MyArray(0)
If
UBound(MyArray) > 0 Then
For
j = 1 To UBound(MyArray)
msgbox
MyArray(j)
Window("XXXABC
100 Asset Accounting").Dialog("XXXABC 100 Asset
Accounting").WinList("Companies:").ExtendSelect
MyArray(j)
Next
End
If
9.
For Date entry by Type method
'Asset
date set
Set
MainXXXABC = description.Create
MainXXXABC("Class
Name").value = "Window"
'MainXXXABC("regexpwndtitle").value
= "XXXABC 100 Asset Accounting"
MainXXXABC("regexpwndclass").value
= "AfxFrameOrView80"
Set
AssetDetail = description.Create
AssetDetail("Class
Name").value = "SwfWindow"
AssetDetail("swfname").value
= "WorkingArea"
‘AssetDetail("regexpwndtitle").value
= "Newt Global" ‘This for the Newt global company its
specific.
Set
ADTP = description.Create
ADTP("Class
Name").value = "SwfObject"
ADTP("swfname").value
= "AcquisitionDateTimePicker"
ADTP("swfname
path").value =
"AcquisitionDateTimePicker;;DetailSplitter;DetailTab;tabControlAdv1;DetailViewControls;WorkingArea;"
Window(MainXXXABC).Activate
Window(MainXXXABC).SwfWindow(AssetDetail).SwfObject(ADTP).Click
Window(MainXXXABC).SwfWindow(AssetDetail).SwfObject(ADTP).Type
DataTable("Acquisition_Date", dtLocalSheet)
10.
UI Validation
Public
Function VerifyLabel()
Set
swfWdw = Description.Create
swfWdw("Class
Name").value = "SwfWindow"
swfWdw("nativeclass").value
= "WindowsForms10.Window.8.app.0.33c0d9d"
swfWdw("regexpwndclass").value
= "WindowsForms10.Window.8.app.0.33c0d9d"
Set
LblObj = Description.Create
LblObj("Class
Name").Value = "SwfLabel"
LblObj("nativeclass").Value
= "WindowsForms10.STATIC.app.0.33c0d9d"
LblObj("regexpwndclass").Value
= "WindowsForms10.STATIC.app.0.33c0d9d"
Set
AppLbl = SwfWindow(swfWdw).ChildObjects(LblObj)
For i
= 0 To AppLbl.Count -1
print
AppLbl(i).GetRoProperty("text")
Next
End
Function
11.
Method
to Access the Group-View-Grids:
Call
GetCelVal(2,2)
Public
Function GetCelVal(row,col)
Window("XXXABC
100 Asset Accounting").Activate
'Getting
all the Information about the cell
Print
Window("XXXABC 100 Asset Accounting").SwfWindow("Asset
Detail -
Sample").SwfObject("gridControl1").Object.GetViewStyleInfo(row,col)
'Getting
the particular information in a particular cell
Print
Window("XXXABC 100 Asset Accounting").SwfWindow("Asset
Detail -
Sample").SwfObject("gridControl1").Object.GetViewStyleInfo(row,col).CellValue
End
Function
For
further reference
12.
Common function for SwfEdit, SwfWindow, SwfButton …..
‘For
Customize field window
SwfWindow(swfWindowFun).SwfEdit(SwfEditFun("maskedDefault")).Set
"MCSM"
SwfWindow(swfWindowFun).SwfEdit(SwfEditFun("maskedDefault")).Type
micTab
Wait(1)
SwfWindow(swfWindowFun).SwfButton(SwfButtonFun("&Cancel")).Click
'SwfWindow(swfWindowFun).SwfWindow(swfWindowFun).SwfButton(SwfButtonFun("&No")).Click
Public
function SwfEditFun(sMskdef)
Set
oSwfEdit = Description.Create
oSwfEdit("Class Name").Value
= "SwfEdit"
oSwfEdit("nativeclass").Value
= "WindowsForms10.EDIT.app.0.33c0d9d"
oSwfEdit("regexpwndclass").Value
= "WindowsForms10.EDIT.app.0.33c0d9d"
oSwfEdit("swfname").Value
= sMskdef
Set
SwfEditFun = oSwfEdit
End
Function
Public
Function swfWindowFun()
Set
oSwfWindow = Description.Create
oSwfWindow("Class Name").Value
= "SwfWindow"
oSwfWindow("nativeclass").Value
= "WindowsForms10.Window.8.app.0.33c0d9d"
oSwfWindow("regexpwndclass").Value
= "WindowsForms10.Window.8.app.0.33c0d9d"
Set
swfWindowFun = oSwfWindow
End
Function
Public
Function SwfButtonFun(sBtntxt)
Set
oSwfButton = Description.Create
oSwfButton("Class Name").Value
= "SwfButton"
oSwfButton("nativeclass").Value
= "WindowsForms10.BUTTON.app.0.33c0d9d"
oSwfButton("regexpwndclass").Value
= "WindowsForms10.BUTTON.app.0.33c0d9d"
oSwfButton("text").Value =
sBtntxt
Set
SwfButtonFun = oSwfButton
End
Function
12.
‘Hex
Editor- to update the QTP Pro.exe
‘http://www.hhdsoftware.com/Downloads/free-hex-editor
13.
'********************************************
'Label
Validation function
'*******************************************
Public
Function VerifyLabel()
Set
swfWdw = Description.Create
swfWdw("Class
Name").value = "SwfWindow"
swfWdw("nativeclass").value
= "WindowsForms10.Window.8.app.0.33c0d9d"
swfWdw("regexpwndclass").value
= "WindowsForms10.Window.8.app.0.33c0d9d"
Set
LblObj = Description.Create
LblObj("Class
Name").Value = "SwfLabel"
LblObj("nativeclass").Value
= "WindowsForms10.STATIC.app.0.33c0d9d"
LblObj("regexpwndclass").Value
= "WindowsForms10.STATIC.app.0.33c0d9d"
Set
AppLbl = SwfWindow(swfWdw).ChildObjects(LblObj)
For j
= 1 To DataTable.LocalSheet.GetRowCount
DataTable.LocalSheet.SetCurrentRow(j)
ExpectedLabel=DataTable("Labels",
dtLocalSheet)
ActualLabel=AppLbl(j-1).GetRoProperty("text")
CompareValues
"Label Validation -
"+Cstr(ExpectedLabel),ExpectedLabel,ActualLabel
Next
End
Function
Public
Function CompareValues(Stepname,Expected,Actual)
If
Expected=Actual Then
ReporterFun micPass,Stepname, Actual
else
ReporterFun
micFail,Stepname, Actual
End
If
End
Function
'*******************************************************************************
'Reporter
function
'********************************************************************************
Public
Function ReporterFun(RptStatus, ResExp, ResAct)
Res =
Split(ResExp,"-")
Reporter.ReportEvent
RptStatus, ResExp, "Expected:-"&Res(1)&"
Actual:-"&ResAct
End
Function
Selecting a Item From Drop Down
Listbox
There
was a issues for selecting a particular Item from Drop Down Listbox
Where
the dropdown was clicked but the Item which should be clicked will
not be selected.
Previous
Code was :
RR=SwfWindow(AppMainFunc("SwfWindow","ReportWindow")).SwfObject(AppMainFunc("SwfObject","GrouplistStdReport")).Object.ListBox.FindStringExact
(GroupNameValue)
SwfWindow(AppMainFunc("SwfWindow","ReportWindow")).SwfObject(AppMainFunc("SwfObject","GrouplistStdReport")).Object.ListBox.SetSelected
RR, True
Update
Code: (Which works fine)
SwfWindow(AppMainFunc("SwfWindow","ReportWindow")).SwfObject(AppMainFunc("SwfObject","GrouplistStdReport")).Object.ListBox.ClearSelected
RR=SwfWindow(AppMainFunc("SwfWindow","ReportWindow")).SwfObject(AppMainFunc("SwfObject","GrouplistStdReport")).Object.ListBox.FindStringExact
(GroupNameValue)
SwfWindow(AppMainFunc("SwfWindow","ReportWindow")).SwfObject(AppMainFunc("SwfObject","GrouplistStdReport")).Object.ListBox.SetSelected
RR, True
Selecting the Date from the calendar
dropdown
There
was a issues in selecting the date from the calendar option and
entering the date in the run time from data table. Where the focus
didn’t fall on the particular Calendar dropdown and the entered
date at the run time was not entered.
Code:
SwfWindow("XXXABC
100 Asset Accounting").SwfObject("dtpAdvRunDate").Object.Focus
VerifyHotKeysTab
"%{DOWN}"
SwfWindow("SwfWindow").SwfObject("SwfObject").SetCurrentCell
1,7
SwfWindow("XXXABC
100 Asset Accounting").SwfObject("dtpAdvRunDate").Type
DataTable("Other_Date",dtLocalSheet)
Code
for using Object Repository in Functional Library:
sFileName
= "C:\XXXABC Automation\UDF\ZebraOR_Ver1.12.vbs"
Set
oFS = CreateObject("Scripting.Filesystemobject")
if
bIsUnicode(sFileName) then
Set
oFile = oFS.OpenTextFile(sFileName,,,true)
else
Set
oFile = oFS.OpenTextFile(sFileName)
end
if
ExecuteGlobal
oFile.ReadAll()
Function
bIsUnicode( byVal filename)
'heck
for Unicode BOM in file.
Dim
fso, ts, char1, char2
set
fso = createobject("Scripting.FileSystemObject")
set
ts = fso.opentextfile(filename)
char1
=ts.read(1)
char2
=ts.read(1)
ts.close
bIsUnicode
= asc(char1) = 255 and asc(char2) = 254
End
Function
Function
for comparing two excel files:
Notes:
Goldencopy
= Path of excel file 1
Generated
Path = Path of excel file 2
Public
Function ReportValidation(GoldenCopy,GeneratedReport)
Set
objExcel = CreateObject("Excel.Application")
objExcel.Visible = True
Set
objWorkbook1= objExcel.Workbooks.Open (GoldenCopy)' Path to actual
golden copy of the report
Set
objWorkbook2= objExcel.Workbooks.Open(GeneratedReport) ' Path to
expected exported report
Set
objWorksheet1= objWorkbook1.Worksheets(1)
Set
objWorksheet2= objWorkbook2.Worksheets(1)
Dim
actual1
Dim
expected
For
Each cell In objWorksheet1.UsedRange
actual1=CStr(objWorksheet2.Range(cell.Address).Value)
expected=CStr(objWorksheet1.Range(cell.Address).Value)
If(CStr(cell.value) <> empty and CStr(actual1)<>empty )
then 'Allow only non empty cells
If
CStr(cell.Value) <> actual1 Then
'objWorksheet2.Range(cell.Address).Interior.ColorIndex
= 3 ' Highlights in red color if any changes in Expected result cells
Reporter.ReportEvent
micFail, "Report Data :"&cell.Address&"
"&expected,"Expected Value:-
"&""""&expected&""""&chr(13)&"
Actual Value :"&""""&actual1&""""
Else
'cell.Interior.ColorIndex
= 0
Reporter.ReportEvent
micPass, "Report Data :"+expected,"Expected Value:-
"&""""&expected&""""&chr(13)&"
Actual Value :"&""""&actual1&""""
End
if
End
If
Next
Set
objExcel=nothing
objWorkbook2.Close
objWorkbook1.Close
End
Function
Set the Date in View Reportng Period
Dialog using “swfname” property value
SwfWindow(AppMainFunc("SwfWindow","DepreciateWindow")).SwfButton(AppMainFunc("SwfButton","ReportingPeriodButton")).Click
DtBookName
= Datatable("Books", dtLocalsheet)
SetForBookName
= Split(DtBookName,",")
For
i = 0 to Ubound(SetForBookName)
BookNameVal
= "dateTimePicker"&SetForBookName(i)
If
BookNameVal = "dateTimePickerCustom 1" Then
BookNameVal
= "dateTimePickerBook6"
Else
if BookNameVal = "dateTimePickerCustom 2" Then
BookNameVal
= "dateTimePickerBook7"
End
IF
End
If
SetForBookNam
= Replace(SetForBookName(i)," ","_")
dtDate
= "ViewReportingPeriod_"&SetForBookNam
Set
SetBookName=SwfWindow(AppMainFunc("SwfWindow","ViewReportingPeriodWind")).SwfObject(DateObjFun(BookNameVal))
DateSetter
SetBookName,dtDate
Next
Public
Function DateObjFun(ObjName)
Set
oDateObjFun=description.Create
oDateObjFun("Class
Name").value="SwfObject"
oDateObjFun("swfname").value=ObjName
oDateObjFun("nativeclass").value="WindowsForms10.Window.8.app.0.33c0d9d"
oDateObjFun("regexpwndclass").value="WindowsForms10.Window.8.app.0.33c0d9d"
Set
DateObjFun=oDateObjFun
End
Function
Public
Function DateSetter(DateBookname,dtDateName)
If
DateBookname.GetROProperty("enabled")=true then
DateBookname.Type(Datatable(dtDateName,dtLocalsheet))
End
if
End
Function
This
function is used to set the date by passing its “swfname”, As if
we don’t have the text property value,
Ex:
In the View Reporting Period Dialog. (But we should have the
corresponding dataTable columns.)
To add the Data table sheets from
external XL files.
DataTable.AddSheet("Sheet_Name")
DataTable.ImportSheet
"C:\Documents and
Settings\Administrator\Desktop\Depre_Consolidated_UDF.xls","Source_SheetName","Designation_SheetName"
msgbox
DataTable("ColumnName","SheetName")
Using Validation function for UI Validation:
Conditions:
Go
to your test folder
1.
Copy and paste Default.xls file in your test folder
2.
Rename that excel file to Particular Action Name e.g
(Sabre_AA_TaxReports_ACEReport_Validation.xls)
3.
Change the sheet name as per window name which we need to validate
(For
uniformity we can give like this Windowname_UIValidationData
E.g:
AdjustedCurrentEarningsForm_ UIValidationData)
4.
Enter the columns in the following order
Label_Text
– Should contains all the Labels text
Label_Enabled
– Should contain enable property of the particular Label text (True
or False) – You can leave blank if no need
Button_Text
– Should contain Button texts
Button_Enabled
- Should contain enable property of the particular button text (True
or False) – You can leave flank if no need
Object_Text
– Should contains objects text
Object_Enabled
- Should contain enable property of the particular object text (True
or False) – You can leave flank if no need
Editbox_Text
– Should contain default text values in edit boxes
Editbox_SwfName
– Should contains swfname for all available edit boxes in the
particular window
Editbox_Enabled
- Should contain enable property of the particular editboxs swfname
(True or False) – You can leave blank if no need
Listbox_Text
– Should contain selected text in the listbox
Listbox_
SwfName – Should contain swfname of the listbox
Listbox_Enabled
– should contain enabled property of the particular listbox
Notes:
1.File
should be available in particular test folder.
2.File
name should be Action Name
Calling
UI Validation function:
Function
name:
Validation(wnd_swfname,sheetname_source)
Arguments:
wnd_swfname
– Swfname of the particular window
sheetname_source
– Sheet name in the ActionName.xls for particular window
Example:
if we need to validate Customized fields form then
swfname
=
CustomizeFieldsForm,sheetname= CustomizeFieldsForm_UIValidationData
so
we should call like this
Validation
“CustomizeFieldsForm”,” CustomizeFieldsForm_UIValidationData”
Note:
1.
The particular window should be opened before calling the function.
Code
for the Validation function:
REM
'*******************************************************************************
REM
'Validation function - Used to validate UI
REM
'********************************************************************************
Public
Function Validation(wnd_swfname,sheetname_source)
Sname
= Split(wnd_swfname,",")
If
UBound(Sname) > 0 Then
Arr
= GetObProperties(Sname(0),Sname(1))
Else
Arr
= GetObProperties("",Sname(0))
End
If
ActionName=Environment("ActionName")
FileDir=Environment("TestDir")&"\"&ActionName&".xls"
DataTable.AddSheet("Validation")
DataTable.ImportSheet
FileDir,sheetname_source,"Validation"
ChkPpt
= Split("swflabel,swfbutton,swfobject,swfedit,swflist",",")
ChkPptDtName
=
Split("Label_Text,Button_Text,Object_Text,Editbox_Text,Listbox_Text",",")
ChkPptDtNameEnable=Split("Label_Enabled,Button_Enabled,Object_Enabled,Editbox_Enabled,Listbox_Enabled",",")
For
k = 0 To UBound(ChkPpt)
For
l=1 to DataTable.GetSheet("Validation").GetRowCount
DataTable.GetSheet("Validation").SetCurrentRow(l)
explbl=DataTable(ChkPptDtName(k),"Validation")
expenabled=DataTable(ChkPptDtNameEnable(k),"Validation")
ExittheFor
= "Yes"
If
ChkPpt(k) = "swfedit" or ChkPpt(k) = "swflist"
Then
expswfname
= DataTable(Replace(ChkPptDtName(k),"_Text","_SwfName"),"Validation")
If
expswfname = empty Then
ExittheFor
= "Yes"
Else
ExittheFor
= "No"
End
If
explbl
= expswfname
End
If
If
ExittheFor = "Yes" and explbl=empty Then
Exit
for
End
If
status="fail"
For
m = 0 To UBound(Arr)
ClName
= Split(Arr(m),"^")
ActClName
= Split(ClName(0),":=")
ActClNametxt
= Split(ClName(1),":=")
ActClNameenabled
= Split(ClName(2),":=")
ActCINameSwfname=Split(ClName(3),":=")
If
LCase(ActClNametxt(1)) = LCase(explbl) Then
Status
= "pass"
explbl1=Replace(explbl,"&","")
If
Lcase(ActClName(1))="swfedit" or
Lcase(ActClName(1))="swflist" Then
explbl1=ActCINameSwfname(1)
End
If
'Compare
the values for the text validation
CompareValues
explbl1&" text validation
",Trim(LCase(explbl)),Trim(Lcase(ActClNametxt(1)))
If
expenabled <>"" and LCase(ChkPpt(k)) <>
"swfedit" and LCase(ChkPpt(k)) <> "swflist"
Then
If
Lcase(ActClNameenabled(1)) =Lcase(expenabled) Then
CompareValues
explbl1&" enabled validation
",Lcase(expenabled),Lcase(ActClNameenabled(1))
Else
CompareValues
explbl1&" enabled validation
",Lcase(expenabled),Lcase(ActClNameenabled(1))
End
If
End
If
If
LCase(ChkPpt(k)) <> "swfedit" and LCase(ChkPpt(k)) <>
"swflist" Then
Exit
For
End
If
End
If
If
ChkPpt(k) = "swfedit" or ChkPpt(k) = "swflist"
Then
If
LCase(ActCINameSwfname(1)) = LCase(expswfname) Then
Status
= "pass"
CompareValues
expswfname&" swfname validation
",expswfname,ActCINameSwfname(1)
If
expenabled <>"" Then
If
Lcase(ActClNameenabled(1)) =Lcase(expenabled) Then
CompareValues
expswfname&" enabled validation
",Lcase(expenabled),Lcase(ActClNameenabled(1))
Else
CompareValues
expswfname&" enabled validation
",Lcase(expenabled),Lcase(ActClNameenabled(1))
End
If
End
If
Exit
For
End
If
End
If
If
Status <> "pass" and m = UBound(Arr) Then
Status
= "fail"
End
If
Next
If
Status="fail" Then
CompareValues
explbl&" text validation ",explbl,explbl&" -
NOT found in the application"
End
If
Next
Next
End
Function
REM
'*******************************************************************************
REM
'Get Object Properties function - Used to get the object properties
REM
'********************************************************************************
Public
Function GetObProperties(MainWindow,SwfwdwName)
ppt
= Split("Class Name,text,enabled,swfname",",")
If
MainWindow <> "" Then
Set
MainWdw = Description.Create
MainWdw("Class
Name").value = "Window"
MainWdw("regexpwndclass").value
="AfxFrameOrView80"
End
If
Set
swfWdw = Description.Create
swfWdw("Class
Name").value = "SwfWindow"
If
SwfwdwName <>"" Then
swfWdw("swfname").value
= SwfwdwName
End
If
swObj
=
Split("SwfButton,SwfEdit,SwfObject,SwfList,SwfLabel,SwfEditor,SwfToolbar",",")
Dim
ObjectArray() ' =
Array(swfbtn,swfedt,swfobj,swflst,swflbl,swfedtr,swftlbar)
Dim
MultiObjArray()
MultiObjArrCounter
= 0
For
q = 0 To UBound(swObj)
ReDim
Preserve ObjectArray(q)
Set
swfallobj = Description.Create
swfallobj("Class
Name").value = swObj(q)
set
ObjectArray(q) = swfallobj
Next
If
MainWindow <> "" Then
Set
Obj = Window(MainWdw).SwfWindow(swfWdw)
Else
Set
Obj = SwfWindow(swfWdw)
End
If
pptval
= ""
For
i = 0 To UBound(ppt)
If
pptval = "" Then
pptval
= ppt(i)&":="&Obj.GetROProperty(ppt(i))
Else
pptval
= pptval&"^"&ppt(i)&":="&Obj.GetROProperty(ppt(i))
End
If
Next
ReDim
Preserve MultiObjArray(MultiObjArrCounter)
MultiObjArray(MultiObjArrCounter)
= pptval
MultiObjArrCounter
= MultiObjArrCounter + 1
For
m = 0 To Ubound(ObjectArray)
Set
Sbtn =Obj.ChildObjects(ObjectArray(m))
For
j = 0 To Sbtn.Count -1
pptval
= ""
For
i = 0 To UBound(ppt)
If
pptval = "" Then
pptval
= ppt(i)&":="&Sbtn(j).GetROProperty(ppt(i))
Else
pptval
= pptval&"^"&ppt(i)&":="&Sbtn(j).GetROProperty(ppt(i))
End
If
Next
ReDim
Preserve MultiObjArray(MultiObjArrCounter)
MultiObjArray(MultiObjArrCounter)
= pptval
MultiObjArrCounter
= MultiObjArrCounter + 1
Next
Next
GetObProperties
= MultiObjArray
End
Function
14.Code for Removing duplicate
values from Array and Comparing Two arrays
b =
Split("a,b,c,d,a,f,g,h,i,b,c,l",",")
e =
Split("e,b,v,c,d,a,f,g,h,i,b,c,l,m,n,h",",")
c = RemoveDupArrVal(b) '/Removing
Duplicates From Arary
d = RemoveDupArrVal(e) '/Removing
Duplicates From Arary
ArrayComp c, d '/Comapring Two arrays
Public Function RemoveDupArrVal(ByRef
arr)
Dim i, dict
If IsArray(arr) Then
Set dict =
CreateObject("Scripting.Dictionary")
For i = 0 To UBound(arr)
'/Comparing the values with previous
values if it not exist then adding in to dictonary obj
If Not dict.Exists(arr(i)) Then
Call dict.Add(arr(i), arr(i))
End If
Next
RemoveDupArrVal = dict.Items
End If
End Function
Public Function ArrayComp(ByRef arrA,
ByRef arrB)
Dim i, dict
If IsArray(arrA) Then
Set dict =
CreateObject("Scripting.Dictionary")
For i = 0 To UBound(arrA)
Call dict.Add(arrA(i),
arrA(i))
Next
For i = 0 To UBound(arrB)
If Not dict.Exists(arrB(i)) Then
Reporter.ReportEvent
micFail,arrB(i)&" - NOT found ","AssetList
Value"&arrB(i)&"Not Found in SmartList"
End If
Next
End If
End Function
15.Code: Sorting value in txt
file
Before Sorting
"C:\testfile.txt"
red-ws-02
atl-ws-01
sf-ws-02
atl-ws-02
atl-ws-03
red-ws-02
sf-ws-01
Dim Arrval1() ‘/Array Dec
FileDirPath="C:\testfile.txt"
‘/Txt file
Const adVarChar = 200
Const MaxCharacters = 255
Const ForReading = 1
Const ForWriting = 2
Set DataList =
CreateObject("ADOR.Recordset")
DataList.Fields.Append "ComputerName",
adVarChar, MaxCharacters
DataList.Open
Set objFSO =
CreateObject("Scripting.FileSystemObject")
Set objFile =
objFSO.OpenTextFile(FileDirPath,ForReading)
counter=1 ‘Dynamic Arry counter
Do Until objFile.AtEndOfStream
strLine = objFile.ReadLine
DataList.AddNew
DataList("ComputerName")
= strLine
DataList.Update
counter=counter+1 ‘inc array counter
Loop
objFile.Close
DataList.Sort = "ComputerName"
‘After Sorting Getting the Sorted
Value from DataList
coun=0
DataList.MoveFirst
Do Until DataList.EOF
ReDim Preserve Arrval1(coun)
Arrval1(coun)=DataList.Fields.Item("ComputerName")
DataList.MoveNext
Loop
For l=0 To UBound(Arrval1)
print Arrval1(l)
Next
AfterSorting
atl-ws-01
atl-ws-02
atl-ws-03
red-ws-02
red-ws-02
sf-ws-01
sf-ws-02
16.Code :Writing value to txt
file
Dim a(5)
a(0) = "Testing"
a(1) = "Testing1"
a(2) = "Testing2"
a(3) = "Testing3"
a(4) = "Testing4"
g = Join(a,vbcrlf)
WriteToLog "c:\Test",g
Public Function WriteToLog(WrDir,Msg)
FileExists = "False"
Dim sExt : sExt = UCase( "txt"
)
Dim oFS : Set oFS = CreateObject(
"Scripting.FileSystemObject" )
Dim sDir : sDir = WrDir
Dim oFile
Counter = 1
FileCount = oFS.GetFolder( sDir
).Files.Count
For Each oFile In oFS.GetFolder( sDir
).Files
If UCase( oFS.GetExtensionName(
oFile.Name ) ) = sExt Then
'WScript.Echo oFile.Path
FileName = oFile.Name
If FileName = "Tmp.Txt"
Then
FileExists = "True"
Exit For
End If
End If
Counter = Counter+1
Next
If FileExists <> "True"
Then
oFS.CreateTextFile sDir&"\"&"Tmp.Txt"
End If
ResInfo = Msg
Set WriteResInfo =
oFS.OpenTextFile(sDir&"\"&"Tmp.txt", 8,
True)
WriteResInfo.WriteLine(ResInfo)
WriteResInfo.Close
SET WriteResInfo = NOTHING
SET oFS = NOTHING
End Function
QTP
Learning’s and Findings in v2013 Non Profit Gov.
''#######################################################################
In
XXXABC v2013 – Gov/Non Profit application, in Asset detail grid, we
had a limitation to set the values in the particular cell. To
overcome this we added space value prefixed with the input value,
Changed the input format and finally, we found the solution by giving
input as text format which has the 2 characters.
The
Corresponding code and the Input value as follows.
RawVal
= Datatable(DataColumName, dtLocalSheet)
SetVal
= " "&Trim(RawVal)
Window(AppMainFunc("Window","AssetListMainWindow")).SwfWindow(AppMainFunc("SwfWindow","AssetDetail")).SwfObject(AppMainFunc("SwfObject","AssetDetailViewGrid")).SetCurrentCell
Row,Clm
Window(AppMainFunc("Window","AssetListMainWindow")).SwfWindow(AppMainFunc("SwfWindow","AssetDetail")).SwfObject(AppMainFunc("SwfObject","AssetDetailViewGrid")).Type
SetVal
''#######################################################################
How to identify dynamically changing objects in QTP:-
-----------------------------------------------------------------------
Consider an example where you are having a tree with nodes[can be folder or directory]. The tree as a whole is designed as a web table and subfolders again as a subweb table. It is easy to identify the index of the tree node while recording, but during playback when and additional folder or directory is added the index will be changed. In these kinds of situations where the index of the objects changes dynamically there are two actions to be performed
Identify the properties of the object
Identify the index at run time
Identify the properties of the object
Use object spy
Add the object to OR
Identify the index at run time
we can use the following piece of code once the properties are identified
For i = 0 to 1000
set sObjTable = Browser("Browser").Page("Page").WebTable("index:="&i)
If Browser("Browser").Page("Page").WebTable("index:="&i).exist Then
If sObjTable.GetROProperty("property name that is not changed") = <Value that is expected> Then
Set sRootFolder = sObjTable
End if
Else
Exit for
End If
Next
In a similar manner, we can identify checkbox and radio button objects whose index changes at run time.
This worked for me hope it will be useful for you too.
Dynamic CheckBox:-
---------------------------
The proposal number is generated from steps before submission. What I've tried is to output value proposal number and assigned a variable to it as below:
Test #1:
'Comment: output value in eRefNo is 1001553EINB8D009
eRefNo = datatable.value("eReferenceNum", dtGlobalSheet)
Window("Point of Sales").Page("Sales Force Automation_13").WebCheckBox(eRefNo ).Set "ON"
Test #2:
'Comment: use Chr(34) as the object properties seems to have "1001553EINB8D009 "
chkbox = Chr(34) & "value:=" & datatable.Value("eRefNo",dtGlobalSheet) &Chr(34)
Window("Point of Sales").Page("Sales Force Automation_13").WebCheckBox(chkbox ).Set "ON"
Orignal Script / Recorded:
Window("Point of Sales").Page("Sales Force Automation_13").WebCheckBox(" selectedItems").Set "ON"
Dynamic webradio :-
---------------------------
for i=1 to vr_QCount
Browser("aa").page("aa").webradiogroup("Name:=Question"&i, "html id:= Question_1_id").select
Next
Set Dp=Description.Create()
Dp(xx).Value=??(create description for webRadioGroup)
Vb_quesCount=Dp.Count
For i=1 to vb_quesCount
vb_QuesText=Dp(i).GetRoProperty
‘Code to search the vb_QuesText in datasheet and if exists( This U can do it ur self)
Browser(x).Page(y).webRadioGroup (‘Name :=’&vb_QuesText,’html id:=Question[‘&i&’].Answer.Id’).Select vb_Ans
Next