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
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
 
No comments:
Post a Comment