Please post your Web Driver questions in official Web Driver forum

Tuesday, February 23, 2010

Initial QTP Scripts in CVS

In a QTP Test following files should be committed to cvs/svn –
In Action
ObjectRepository.bdb
Resource.mtr
Script.MTS
Root Folder
Default.xls
Test.tsp
Out of these files only “Script.MTS” is used by QTP tests for My App, but QTP still needs other files to open test, hence I had to add those as well.
THanks,
Tarun K

Friday, February 12, 2010

Sravan Durga Outing

Best corporate outing I have ever had.....



Deallocating memory in VB Script

I came across a few articles which talk about setting objects to 'Nothing' after its usages to release memory though I did not find any specific pointer about normal variables.
I variable should be set to 'Empty' to deallocate memory, i.e.

******************************
Dim aVariable
aVariable = 1
aVariable = Empty

MsgBox IsEmpty(aVariable)

Dim aObject
Set aObject = CreateObject("Scripting.FileSystemObject")
Set aObject = Nothing

MsgBox aObject Is Nothing
******************************
For more on this refer here


commented on - 16th Feb 2010
Looks like some one has different thought here

Thursday, February 11, 2010

Using ExcelADO to fetch data from excel

We all are aware of externalizing test data from test scripts in test automation.
We often stumble upon using excel as test data file, and I have seen crude ways of handling excel.

i.e. - Creating Excel Application object
Opening work book and fetching data

Disadvantages of this approach are detailed on Microsoft website here - http://support.microsoft.com/kb/278973/EN-US/
In a gist following above mentioned approach would be process heavy and would make script execution (especially in case of long running test suites) slow

Another crude way is to use sheet-name (which is still acceptable), Row and Column number (i.e. - (2, 5)), Row and Column range (B5, B10). Using row and column identifier is fragile as insertion of new data set in excel would break existing test scripts.

A better approach to overcome these is to use ExcelADO along with name of Range in Excel.
ExcelADO overcomes process over head and using Range to overcome fragility over Row and Column Range.
In excel an individual cell or collection of cell could be referenced with name. To do this - Select required cell range and use 'Insert' > 'Name' > 'Define' Menu

Following is a function which returns collection of items from named range in excel file -

'‘**************************************************
'Function Name : Func_GetExcelData
'Description : This function is used to return value from named cell range in excel file
' This method should be used when getting data from individual cell and not from collection fo cell
'Input parameters : strFileName - Name of test data file
' strQuery – SQL Query to execute

'Date of Creation : 19th Feb 2010
'‘**************************************************

Function Func_GetExcelData(strFileName, strQuery)

Dim cn
Dim rs

Set cn = CreateObject("ADODB.Connection")
cn.Open "Provider=Microsoft.Jet.OLEDB.4.0;" _
& "Data Source=" & strFileName & ";" _
& "Extended Properties=""Excel 8.0;HDR=Yes;"""


Set rs = CreateObject("ADODB.Recordset")
rs.Open strQuery, cn

'Remove Carriage Return and return the value
dataString = Split (rs.GetString, Chr(13))
Func_GetExcelData = dataString(0)

rs.Close
Set rs = Nothing
cn.Close
Set cn = Nothing

End Function



'‘**************************************************
'Function Name : Func_GetExcelRangeData
'Description : This function is used to return multiple values from named cell range in excel file
'Input parameters : strFileName - Name of test data file
' strQuery – SQL Query to execute

'Date of Creation : 26th Feb 2010
'‘**************************************************
Function Func_GetExcelRangeData(strFileName, strQuery)

Dim cn
Dim rs

Set cn = CreateObject("ADODB.Connection")
cn.Open "Provider=Microsoft.Jet.OLEDB.4.0;" _
& "Data Source=" & strFileName & ";" _
& "Extended Properties=""Excel 8.0;HDR=Yes;"""


Set rs = CreateObject("ADODB.Recordset")
rs.Open strQuery, cn

'Remove Carriage Return and return the value
dataString = rs.GetString
Func_GetExcelRangeData = dataString

rs.Close
Set rs = Nothing
cn.Close
Set cn = Nothing

End Function




'‘**************************************************
'Function Name : Func_SetExcelData
'Description : This function is used to set data in one cell of excel file
'Input parameters : strFileName - Name of test data file
'strQuery – SQL Query to execute
'strVal - Value to be set
' intIndex - Index where value is to be updated

'Date of Creation : 19th Feb 2010
'‘**************************************************
Function Func_SetExcelData(strFileName, strQuery, strVal)

Dim cn
Dim rs

Set cn = CreateObject("ADODB.Connection")
cn.Open "Provider=Microsoft.Jet.OLEDB.4.0;" _
& "Data Source=" & strFileName & ";" _
& "Extended Properties=""Excel 8.0;HDR=Yes;"""


Set rs = CreateObject("ADODB.Recordset")
rs.ActiveConnection = cn

rs.LockType = 2
rs.Source = strQuery
rs.Open

rs.MoveFirst
rs.Fields(0).Value = strVal
rs.Update

rs.Close
Set rs = Nothing
cn.Close
Set cn = Nothing

End Function

################################################
This Function takes file name and cell range name as arguments. Call to this function would return String with collection of items. These items then can then be separated using split function in vbs.

MsgBox fExcelCellADO("Path to Excel", "MyRange")

I will be more than glad to know a better approach than this.

~ T

n.b I have seen problem while fetching data from just one named cell in office 2003, it works perfect with office 2007

Friday, February 5, 2010

Selenium Function Library

Poornima and I built collection of java Classes for selenium which provide capabilities which are not built in Selenium like - HTML Table Parsing, Custom Verification, Logging to name a few. This project is been existent from some time now, though I never had chance to write up on this. Whole project is available under "Repository" section of Veda for "Testing Competency" project and can be opened using java IDE like Eclipe.
Best way to get acquainted with this API is to generate java doc your self which is no more than child's play.
Make sure you have java 1.5 or higher and ANT 1.7.0
Configure System variable for Java and ANT, once having done this u should be able to see version of java and ant on your console on doing - "java-version" and "ant -verison"
On Console navigate to path where Sel Library is check out, it turns out to be following for me -
"D:\SelFunctionLibrary\SeleniumFunctionLibrary>"
Execute following ANT Target -
D:\SelFunctionLibrary\SeleniumFunctionLibrary>ant -buildfile build.xml javadoc
This will build java doc files in "javadoc" folder of Sel library, which describes package, methods and classes available in Sel Library. These files are in html format and can be easily opened using browser. You should see following out put on execution ANT Target -
###########################################################################
Buildfile: build.xml
init:
[mkdir] Created dir: D:\SelFunctionLibrary\SeleniumFunctionLibrary\build
[echo] Creating Time Stamp
setClassPath:
javadoc:
[javadoc] Generating Javadoc
[javadoc] Javadoc execution
[javadoc] Loading source file D:\SelFunctionLibrary\SeleniumFunctionLibrary\sr
c\com\ciber\core\SelTestCase.java...
[javadoc] Loading source file D:\SelFunctionLibrary\SeleniumFunctionLibrary\sr
c\com\ciber\core\functionlibrary\CustomVerification.java...
[javadoc] Loading source file D:\SelFunctionLibrary\SeleniumFunctionLibrary\sr
c\com\ciber\core\functionlibrary\FileHandler.java...
[javadoc] Loading source file D:\SelFunctionLibrary\SeleniumFunctionLibrary\sr
c\com\ciber\core\functionlibrary\HTMLTableParser.java...
[javadoc] Loading source file D:\SelFunctionLibrary\SeleniumFunctionLibrary\sr
c\com\ciber\core\functionlibrary\LogSelenium.java...
[javadoc] Loading source file D:\SelFunctionLibrary\SeleniumFunctionLibrary\sr
c\com\ciber\core\functionlibrary\Misc.java...
[javadoc] Loading source file D:\SelFunctionLibrary\SeleniumFunctionLibrary\sr
c\com\ciber\core\functionlibrary\SafeSelenium.java...
[javadoc] Loading source file D:\SelFunctionLibrary\SeleniumFunctionLibrary\sr
c\com\ciber\core\functionlibrary\WebObjects.java...
[javadoc] Loading source file D:\SelFunctionLibrary\SeleniumFunctionLibrary\sr
c\com\ciber\testclass\WebTest.java...
[javadoc] Constructing Javadoc information...
[javadoc] Standard Doclet version 1.6.0_11
[javadoc] Building tree for all the packages and classes...
[javadoc] Building index for all the packages and classes...
[javadoc] Building index for all classes...
BUILD SUCCESSFUL
Total time: 3 seconds
#####################################################################################
We appreciate if you contribute to this project in form of - Review, Defects, and Enhancements etc.
~ T
Fork me on GitHub