<?xml version='1.0' encoding='UTF-8'?><?xml-stylesheet href="http://www.blogger.com/styles/atom.css" type="text/css"?><feed xmlns='http://www.w3.org/2005/Atom' xmlns:openSearch='http://a9.com/-/spec/opensearchrss/1.0/' xmlns:blogger='http://schemas.google.com/blogger/2008' xmlns:georss='http://www.georss.org/georss' xmlns:gd="http://schemas.google.com/g/2005" xmlns:thr='http://purl.org/syndication/thread/1.0'><id>tag:blogger.com,1999:blog-2797255279827086330</id><updated>2024-09-16T10:30:10.839-07:00</updated><category term="QCAPI"/><category term="Actions"/><category term="Actions v/s Functions"/><category term="COM object with DLL"/><category term="COM with QTP"/><category term="Creating Custom DLL with QTP"/><category term="DLL with QTP"/><category term="Database with QTP"/><category term="Descriptive programming v/s object Repository"/><category term="Dictionary Object"/><category term="Differences between Actions and Functions"/><category term="Excel with QTP"/><category term="Fucntions"/><category term="Mail with VBScript"/><category term="Object Repository"/><category term="QTP Actions"/><category term="QTP Functions"/><category term="QTP Object  Repository"/><category term="QTP with QC"/><category term="QTPMail"/><category term="RegistryQTP"/><category term="alternative for datatable"/><category term="connectQC"/><category term="connecting QC with VBScript"/><category term="creating DLL"/><category term="current timezone"/><category term="currenttimezone in QTP"/><category term="descriptive programming"/><category term="export OR"/><category term="intellisense"/><category term="retreiving data from excel"/><category term="sendmail"/><category term="tsr to XML"/><category term="various way to retrieve data from excel"/><title type='text'>Do Testing Innovatively</title><subtitle type='html'></subtitle><link rel='http://schemas.google.com/g/2005#feed' type='application/atom+xml' href='http://innovativetesting.blogspot.com/feeds/posts/default'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2797255279827086330/posts/default?redirect=false'/><link rel='alternate' type='text/html' href='http://innovativetesting.blogspot.com/'/><link rel='hub' href='http://pubsubhubbub.appspot.com/'/><author><name>MuraliKunda</name><uri>http://www.blogger.com/profile/13003543526387766775</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><generator version='7.00' uri='http://www.blogger.com'>Blogger</generator><openSearch:totalResults>19</openSearch:totalResults><openSearch:startIndex>1</openSearch:startIndex><openSearch:itemsPerPage>25</openSearch:itemsPerPage><entry><id>tag:blogger.com,1999:blog-2797255279827086330.post-591347988257785493</id><published>2010-12-21T16:53:00.000-08:00</published><updated>2010-12-21T16:54:04.857-08:00</updated><title type='text'>Running a test set through OTA API</title><content type='html'>‘Option Explicit&lt;br /&gt;&lt;br /&gt;Public Sub RunTestSet(otdc, tsFolderName, tSetName, _&lt;br /&gt;HostName, runWhere)&lt;br /&gt;&lt;br /&gt;Dim TSetFact, tsList&lt;br /&gt;Dim theTestSet&lt;br /&gt;Dim tsTreeMgr&lt;br /&gt;Dim tsFolder&lt;br /&gt;Dim Scheduler&lt;br /&gt;Dim nPath&lt;br /&gt;Dim execStatus&lt;br /&gt;&lt;br /&gt;‘ Get the test set tree manager from the test set factory&lt;br /&gt;‘tdc is the global TDConnection object.&lt;br /&gt;Set TSetFact = otdc.TestSetFactory&lt;br /&gt;Set tsTreeMgr = otdc.TestSetTreeManager&lt;br /&gt;‘ Get the test set folder passed as an argument to the example code&lt;br /&gt;nPath = “Root\” &amp; Trim(tsFolderName)&lt;br /&gt;Set tsFolder = tsTreeMgr.NodeByPath(nPath)&lt;br /&gt;If tsFolder Is Nothing Then&lt;br /&gt;err.Raise vbObjectError + 1, “RunTestSet”, “Could not find folder ” &amp; nPath&lt;br /&gt;End If&lt;br /&gt;&lt;br /&gt;‘ Search for the test set passed as an argument to the example code&lt;br /&gt;&lt;br /&gt;Set tsList = tsFolder.FindTestSets(tSetName)&lt;br /&gt;&lt;br /&gt;If tsList Is Nothing Then&lt;br /&gt;err.Raise vbObjectError + 1, “RunTestSet”, “Could not find test set in the ” &amp; nPath&lt;br /&gt;End If&lt;br /&gt;&lt;br /&gt;If tsList.Count &gt; 1 Then&lt;br /&gt;MsgBox “FindTestSets found more than one test set: refine search”&lt;br /&gt;Exit Sub&lt;br /&gt;ElseIf tsList.Count &lt; 1 Then&lt;br /&gt;MsgBox “FindTestSets: test set not found”&lt;br /&gt;Exit Sub&lt;br /&gt;End If&lt;br /&gt;Set theTestSet = tsList.Item(1)&lt;br /&gt;‘Debug.Print theTestSet.ID&lt;br /&gt;&lt;br /&gt;‘Start the scheduler on the local machine&lt;br /&gt;Set Scheduler = theTestSet.StartExecution(HostName)&lt;br /&gt;&lt;br /&gt;‘Set up for the run depending on where the test instances&lt;br /&gt;‘ are to execute.&lt;br /&gt;&lt;br /&gt;Select Case runWhere&lt;br /&gt;Case “RUN_LOCAL”&lt;br /&gt;‘Run all tests on the local machine&lt;br /&gt;Scheduler.RunAllLocally = True&lt;br /&gt;Case “RUN_REMOTE”&lt;br /&gt;‘Run tests on a specified remote machine&lt;br /&gt;Scheduler.TdHostName = HostName&lt;br /&gt;‘ RunAllLocally must not be set for&lt;br /&gt;‘ remote invocation of tests.&lt;br /&gt;‘ Do not do this:&lt;br /&gt;‘ Scheduler.RunAllLocally = False&lt;br /&gt;Case “RUN_PLANNED_HOST”&lt;br /&gt;‘Run on the hosts as planned in the test set&lt;br /&gt;Dim TSTestFact, TestList&lt;br /&gt;Dim tsFilter&lt;br /&gt;Dim TSTst&lt;br /&gt;‘Get the test instances from the test set&lt;br /&gt;Set TSTestFact = theTestSet.TSTestFactory&lt;br /&gt;Set tsFilter = TSTestFact.Filter&lt;br /&gt;tsFilter.Filter(“TC_CYCLE_ID”) = theTestSet.ID&lt;br /&gt;Set TestList = TSTestFact.NewList(tsFilter.Text)&lt;br /&gt;Scheduler.RunAllLocally = False&lt;br /&gt;End Select&lt;br /&gt;&lt;br /&gt;‘Run the tests&lt;br /&gt;Scheduler.run&lt;br /&gt;&lt;br /&gt;Set execStatus = Scheduler.ExecutionStatus&lt;br /&gt;&lt;br /&gt;While (RunFinished = False)&lt;br /&gt;execStatus.RefreshExecStatusInfo “all”, True&lt;br /&gt;RunFinished = execStatus.Finished&lt;br /&gt;Wend&lt;br /&gt;End Sub&lt;br /&gt;&lt;br /&gt;‘================================&lt;br /&gt;&lt;br /&gt;Const qcHostName = “”&lt;br /&gt;Const qcDomain = “”&lt;br /&gt;Const qcProject = “” ‘Please define here the name of the project&lt;br /&gt;Const qcUser = “” ‘Please define here the username&lt;br /&gt;Const qcPassword = “” ‘Please define here the password&lt;br /&gt;Dim tdc&lt;br /&gt;Dim qcServer&lt;br /&gt;Dim objArgs&lt;br /&gt;Dim strArg&lt;br /&gt;Dim strTestSet&lt;br /&gt;Dim bRunCode&lt;br /&gt;&lt;br /&gt;‘======GETTING ARGUMENTS==============&lt;br /&gt;set objArgs = WScript.Arguments&lt;br /&gt;If WScript.Arguments.Count&lt;1 Or WScript.Arguments.Count&gt;2 Then&lt;br /&gt;WScript.Echo “Please enter the name of the test set”&lt;br /&gt;bRunCode = False&lt;br /&gt;Else&lt;br /&gt;For Each strArg in objArgs&lt;br /&gt;WScript.Echo strArg&amp;” is starting…”&lt;br /&gt;strTestSet = strArg&lt;br /&gt;bRunCode = True&lt;br /&gt;Next&lt;br /&gt;End If&lt;br /&gt;‘===========================================================&lt;br /&gt;&lt;br /&gt;If bRunCode Then&lt;br /&gt;qcServer = “http://” &amp; qcHostName&lt;br /&gt;qcServer = qcServer &amp; “/qcbin”&lt;br /&gt;Set tdc = CreateObject(“tdapiole80.tdconnection”)&lt;br /&gt;&lt;br /&gt;If (tdc Is Nothing) Then&lt;br /&gt;MsgBox “tdc object is empty”&lt;br /&gt;End If&lt;br /&gt;&lt;br /&gt;tdc.InitConnectionEx qcServer&lt;br /&gt;tdc.Login qcUser, qcPassword&lt;br /&gt;tdc.Connect qcDomain, qcProject&lt;br /&gt;&lt;br /&gt;RunTestSet tdc, “Insert here path to the test set”, strTestSet , “Insert here the name of the machine”, “RUN_LOCAL”&lt;br /&gt;&lt;br /&gt;‘Disconnect from the project&lt;br /&gt;If tdc.Connected Then&lt;br /&gt;tdc.Disconnect&lt;br /&gt;End If&lt;br /&gt;‘Log off the server&lt;br /&gt;If tdc.LoggedIn Then&lt;br /&gt;tdc.Logout&lt;br /&gt;End If&lt;br /&gt;‘Release the TDConnection object.&lt;br /&gt;tdc.ReleaseConnection&lt;br /&gt;”Check status (For illustrative purposes.)&lt;br /&gt;Set tdc = Nothing&lt;br /&gt;End IF</content><link rel='replies' type='application/atom+xml' href='http://innovativetesting.blogspot.com/feeds/591347988257785493/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://innovativetesting.blogspot.com/2010/12/running-test-set-through-ota-api.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2797255279827086330/posts/default/591347988257785493'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2797255279827086330/posts/default/591347988257785493'/><link rel='alternate' type='text/html' href='http://innovativetesting.blogspot.com/2010/12/running-test-set-through-ota-api.html' title='Running a test set through OTA API'/><author><name>MuraliKunda</name><uri>http://www.blogger.com/profile/13003543526387766775</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2797255279827086330.post-5395362845075833384</id><published>2010-11-09T04:48:00.001-08:00</published><updated>2010-11-09T04:48:57.031-08:00</updated><title type='text'>editing a registry file with VBScript</title><content type='html'>Option Explicit&lt;br /&gt;&#39;Declare variables&lt;br /&gt;Dim WSHShell, rr, rr2, MyBox, val, val2, ttl, toggle&lt;br /&gt;Dim jobfunc, itemtype&lt;br /&gt;On Error Resume Next&lt;br /&gt;Set WSHShell = WScript.CreateObject(&quot;WScript.Shell&quot;)&lt;br /&gt;val = &quot;HKCU\Software\Microsoft\Windows\CurrentVersion\Policies\System\DisableRegistryTools&quot;&lt;br /&gt;val2 = &quot;HKLM\Software\Microsoft\Windows\CurrentVersion\Policies\System\DisableRegistryTools&quot;&lt;br /&gt;itemtype = &quot;REG_DWORD&quot;&lt;br /&gt;jobfunc = &quot;Registry Editing Tools are now &quot;&lt;br /&gt;ttl = &quot;Result&quot;&lt;br /&gt;&#39;reads the registry key value.&lt;br /&gt;rr = WSHShell.RegRead (val)&lt;br /&gt;rr2 = WSHShell.RegRead (val2)&lt;br /&gt;toggle=1&lt;br /&gt;If (rr=1 or rr2=1) Then toggle=0&lt;br /&gt;If toggle = 1 Then&lt;br /&gt;WSHShell.RegWrite val, 1, itemtype&lt;br /&gt;WSHShell.RegWrite val2, 1, itemtype&lt;br /&gt;Mybox = MsgBox(jobfunc &amp; &quot;disabled.&quot;, 4096, ttl)&lt;br /&gt;Else&lt;br /&gt;WSHShell.RegDelete val&lt;br /&gt;WSHShell.RegDelete val2&lt;br /&gt;Mybox = MsgBox(jobfunc &amp; &quot;enabled.&quot;, 4096, ttl)&lt;br /&gt;End If</content><link rel='replies' type='application/atom+xml' href='http://innovativetesting.blogspot.com/feeds/5395362845075833384/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://innovativetesting.blogspot.com/2010/11/editing-registry-file-with-vbscript.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2797255279827086330/posts/default/5395362845075833384'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2797255279827086330/posts/default/5395362845075833384'/><link rel='alternate' type='text/html' href='http://innovativetesting.blogspot.com/2010/11/editing-registry-file-with-vbscript.html' title='editing a registry file with VBScript'/><author><name>MuraliKunda</name><uri>http://www.blogger.com/profile/13003543526387766775</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2797255279827086330.post-396031226002047754</id><published>2010-11-04T00:04:00.000-07:00</published><updated>2010-11-04T00:06:48.363-07:00</updated><title type='text'>Schedule/execute testset run in Quality Center from Windows (VBScript)</title><content type='html'>http://the-koala-egg.blogspot.com/2008/02/scheduleexecute-testset-run-in-quality.html&lt;br /&gt;-----------------&lt;br /&gt;VBScript:&lt;br /&gt;&lt;br /&gt;Dim QCConnectionSet &lt;br /&gt;QCConnection = CreateObject(&quot;TDApiOle80.TDConnection&quot;)&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;QCConnection.InitConnectionEx &quot;server_address&quot; &#39; &lt;--------------- Fill in server addressQCConnection.login &quot;user&quot;, &quot;pwd&quot; &#39;&lt;------------------- FILL in user/pwd&lt;br /&gt;&lt;br /&gt;QCConnection.Connect &quot;domain_name&quot;, &quot;project_name&quot; &#39;&lt;----------- FILL Domain/Project &lt;br /&gt;&lt;br /&gt;Set TSetFact = QCConnection.TestSetFactory &lt;br /&gt;Set tsTreeMgr = QCConnection.TestSetTreeManager &lt;br /&gt;nPath = &quot;Root\test&quot; &#39;&lt;------------- FILL IN PATH TO TESTSET&lt;br /&gt;&lt;br /&gt;Set tsFolder = tsTreeMgr.NodeByPath(nPath)&lt;br /&gt;If tsFolder Is Nothing Then&lt;br /&gt;msgbox &quot;error&quot;&lt;br /&gt;&lt;br /&gt;End If &lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Set tsList = tsFolder.FindTestSets(&quot;name_of testset&quot;) &#39;&lt;------- FILL IN NAME OF TESTSET&lt;br /&gt;If tsList.Count &gt; 1 Then&lt;br /&gt;MsgBox &quot;FindTestSets found more than one test set: refine search&quot; &lt;br /&gt;ElseIf tsList.Count &lt;&gt;&lt;br /&gt;MsgBox &quot;FindTestSets: test set not found&quot; &lt;br /&gt;End If &lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Set theTestSet = tsList.Item(1) &lt;br /&gt;Set Scheduler = theTestSet.StartExecution(&quot;&quot;)&lt;br /&gt;Scheduler.RunAllLocally = True&lt;br /&gt;Scheduler.HostTimeOut = 100000&lt;br /&gt;Scheduler.runSet execStatus = Scheduler.ExecutionStatus &lt;br /&gt;&lt;br /&gt;RunFinished = False&lt;br /&gt;while RunFinished = False &lt;br /&gt;execStatus.RefreshExecStatusInfo &quot;all&quot;, True &lt;br /&gt;RunFinished = execStatus.Finished &lt;br /&gt;&lt;br /&gt;wend&lt;br /&gt;&lt;br /&gt;QCConnection.Disconnect&lt;br /&gt;QCConnection.Logout&lt;br /&gt;Set QCConnection = Nothing&lt;br /&gt;&lt;br /&gt;---------------</content><link rel='replies' type='application/atom+xml' href='http://innovativetesting.blogspot.com/feeds/396031226002047754/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://innovativetesting.blogspot.com/2010/11/scheduleexecute-testset-run-in-quality.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2797255279827086330/posts/default/396031226002047754'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2797255279827086330/posts/default/396031226002047754'/><link rel='alternate' type='text/html' href='http://innovativetesting.blogspot.com/2010/11/scheduleexecute-testset-run-in-quality.html' title='Schedule/execute testset run in Quality Center from Windows (VBScript)'/><author><name>MuraliKunda</name><uri>http://www.blogger.com/profile/13003543526387766775</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2797255279827086330.post-2035725624415862558</id><published>2010-10-27T04:54:00.001-07:00</published><updated>2010-10-27T04:54:26.402-07:00</updated><title type='text'>creating a new database using vbscript</title><content type='html'>Set oConn = CreateObject( &quot;ADOX.Catalog&quot; )&lt;br /&gt;&lt;br /&gt; &lt;br /&gt;&lt;br /&gt;oConn.Create &quot;Provider = Microsoft.Jet.OLEDB.4.0; &quot; &amp; _&lt;br /&gt;&lt;br /&gt;        &quot;Data Source = new_db.mdb&quot;</content><link rel='replies' type='application/atom+xml' href='http://innovativetesting.blogspot.com/feeds/2035725624415862558/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://innovativetesting.blogspot.com/2010/10/creating-new-database-using-vbscript.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2797255279827086330/posts/default/2035725624415862558'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2797255279827086330/posts/default/2035725624415862558'/><link rel='alternate' type='text/html' href='http://innovativetesting.blogspot.com/2010/10/creating-new-database-using-vbscript.html' title='creating a new database using vbscript'/><author><name>MuraliKunda</name><uri>http://www.blogger.com/profile/13003543526387766775</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2797255279827086330.post-8194737411485454847</id><published>2010-10-27T04:52:00.001-07:00</published><updated>2010-10-27T04:52:53.432-07:00</updated><title type='text'>how to retreive data from a database</title><content type='html'>Dim oConn, oRst, oField&lt;br /&gt;&lt;br /&gt;Dim sql&lt;br /&gt;&lt;br /&gt; &lt;br /&gt;&lt;br /&gt;set oConn = CreateObject(&quot;ADODB.Connection&quot;)&lt;br /&gt;&lt;br /&gt;oConn.Open &quot;QT_Flight32&quot;&lt;br /&gt;&lt;br /&gt;set oRst = CreateObject(&quot;ADODB.recordset&quot;)&lt;br /&gt;&lt;br /&gt;oRst.Open &quot;Select * from Orders&quot;, oConn&lt;br /&gt;&lt;br /&gt;Do Until oRst.EOF&lt;br /&gt;&lt;br /&gt;    For each oField in oRst.Fields&lt;br /&gt;&lt;br /&gt;        Print oField.Name &amp; &quot; = &quot; &amp; oField.Value&lt;br /&gt;&lt;br /&gt;    Next&lt;br /&gt;&lt;br /&gt;    Print String( 20, &quot;-&quot; )&lt;br /&gt;&lt;br /&gt;    oRst.MoveNext&lt;br /&gt;&lt;br /&gt;loop&lt;br /&gt;&lt;br /&gt; &lt;br /&gt;&lt;br /&gt;oRst.close&lt;br /&gt;&lt;br /&gt;oConn.close&lt;br /&gt;&lt;br /&gt;http://www.advancedqtp.com/knowledge-base/qtips/databases-id44/adodb/display-records/</content><link rel='replies' type='application/atom+xml' href='http://innovativetesting.blogspot.com/feeds/8194737411485454847/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://innovativetesting.blogspot.com/2010/10/how-to-retreive-data-from-database.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2797255279827086330/posts/default/8194737411485454847'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2797255279827086330/posts/default/8194737411485454847'/><link rel='alternate' type='text/html' href='http://innovativetesting.blogspot.com/2010/10/how-to-retreive-data-from-database.html' title='how to retreive data from a database'/><author><name>MuraliKunda</name><uri>http://www.blogger.com/profile/13003543526387766775</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2797255279827086330.post-4650248837391499914</id><published>2010-10-26T04:31:00.000-07:00</published><updated>2010-10-26T04:32:49.066-07:00</updated><title type='text'>automating google earth using QTP</title><content type='html'>There is good article mentioned in advancedqtp.com. It says that it can be automated and here is the URL&lt;br /&gt;http://www.advancedqtp.com/knowledge-base/articles/environment-techniques-id15/web-id34/automating-google-earth/</content><link rel='replies' type='application/atom+xml' href='http://innovativetesting.blogspot.com/feeds/4650248837391499914/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://innovativetesting.blogspot.com/2010/10/automating-google-earth-using-qtp.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2797255279827086330/posts/default/4650248837391499914'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2797255279827086330/posts/default/4650248837391499914'/><link rel='alternate' type='text/html' href='http://innovativetesting.blogspot.com/2010/10/automating-google-earth-using-qtp.html' title='automating google earth using QTP'/><author><name>MuraliKunda</name><uri>http://www.blogger.com/profile/13003543526387766775</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2797255279827086330.post-3269066161569932159</id><published>2010-10-26T04:15:00.001-07:00</published><updated>2010-10-26T04:17:28.978-07:00</updated><title type='text'>Can we test mobile applications in the mobile phone</title><content type='html'>The question is discussed in several forums here I am giving the URLs of the respective forums.&lt;br /&gt;&lt;br /&gt;http://www.jamosolutions.com/documents/meuxqtp.html&lt;br /&gt;&lt;br /&gt;http://experitest.com/support/tutorial/how-to/set-up-new-project/connect-an-external-device-e-g-android/ - advancedqtp.com</content><link rel='replies' type='application/atom+xml' href='http://innovativetesting.blogspot.com/feeds/3269066161569932159/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://innovativetesting.blogspot.com/2010/10/can-we-test-mobile-applications-in.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2797255279827086330/posts/default/3269066161569932159'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2797255279827086330/posts/default/3269066161569932159'/><link rel='alternate' type='text/html' href='http://innovativetesting.blogspot.com/2010/10/can-we-test-mobile-applications-in.html' title='Can we test mobile applications in the mobile phone'/><author><name>MuraliKunda</name><uri>http://www.blogger.com/profile/13003543526387766775</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2797255279827086330.post-6268312919513612459</id><published>2010-10-15T02:20:00.000-07:00</published><updated>2010-10-15T02:21:59.109-07:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="export OR"/><category scheme="http://www.blogger.com/atom/ns#" term="QTP Object  Repository"/><category scheme="http://www.blogger.com/atom/ns#" term="tsr to XML"/><title type='text'>Exporting a OR file to an XML file</title><content type='html'>The below code snippet helps to export TSR file to XML file.&lt;br /&gt;Set obj = CreateObject(&quot;Mercury.ObjectRepositoryUtil&quot;)&lt;br /&gt;obj.ExportToXML &quot;SourceFile&quot;, &quot;TargetFile&quot;&lt;br /&gt;Set obj = Nothing</content><link rel='replies' type='application/atom+xml' href='http://innovativetesting.blogspot.com/feeds/6268312919513612459/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://innovativetesting.blogspot.com/2010/10/exporting-or-file-to-xml-file.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2797255279827086330/posts/default/6268312919513612459'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2797255279827086330/posts/default/6268312919513612459'/><link rel='alternate' type='text/html' href='http://innovativetesting.blogspot.com/2010/10/exporting-or-file-to-xml-file.html' title='Exporting a OR file to an XML file'/><author><name>MuraliKunda</name><uri>http://www.blogger.com/profile/13003543526387766775</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2797255279827086330.post-780716503980818977</id><published>2010-10-06T03:28:00.000-07:00</published><updated>2010-10-07T23:05:45.762-07:00</updated><title type='text'>Intellisense quick help</title><content type='html'>http://www.advancedqtp.com/knowledge-base/articles/qtp-tricks4/qtp-hacks/intellisense-and-com/#&lt;br /&gt;---------------------------------------------------------------------------------------&lt;br /&gt;http://www.sqaforums.com/showthreaded.php?Cat=0&amp;Number=408757&amp;page=0&amp;vc=1</content><link rel='replies' type='application/atom+xml' href='http://innovativetesting.blogspot.com/feeds/780716503980818977/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://innovativetesting.blogspot.com/2010/10/intellisense-quick-help.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2797255279827086330/posts/default/780716503980818977'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2797255279827086330/posts/default/780716503980818977'/><link rel='alternate' type='text/html' href='http://innovativetesting.blogspot.com/2010/10/intellisense-quick-help.html' title='Intellisense quick help'/><author><name>MuraliKunda</name><uri>http://www.blogger.com/profile/13003543526387766775</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2797255279827086330.post-2440547860654170357</id><published>2010-10-05T22:23:00.000-07:00</published><updated>2010-10-05T22:27:13.002-07:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="Dictionary Object"/><category scheme="http://www.blogger.com/atom/ns#" term="intellisense"/><category scheme="http://www.blogger.com/atom/ns#" term="RegistryQTP"/><title type='text'>Adding Scripting.Disctionary object in registry</title><content type='html'>Accessing a Scripting.Dictionary object as part of your QTP and can get the intellisense&lt;br /&gt;&lt;br /&gt;HKEY_CURRENT_USER\Software\Mercury Interactive\QuickTest Professional\MicTest\ReservedObjects\&lt;br /&gt;&lt;br /&gt;There you’ll see many of QTP’s internal object. DO NOT MESS WITH THEM.&lt;br /&gt;Next, create a new key, with the name of the reserved object (e.g. Advanced QTP)&lt;br /&gt;  &lt;br /&gt;&lt;br /&gt;Enter the key &quot;folder&quot;, and create these values :&lt;br /&gt;   ProgID (string) - Holds the COM program ID we want to create (e.g. Scripting.Dictionary)&lt;br /&gt;   VisibleMode (dWord) - Holds the value 2. This controls the auto-complete and intellisense appearance.&lt;br /&gt;   UIName (string) - The name that will refer to the reserved object. Make sure this is the same as the key name.&lt;br /&gt;&lt;br /&gt;http://www.advancedqtp.com/knowledge-base/articles/qtp-tricks/qtp-hacks/reserved-objects-as-an-env-object-replacement/&lt;br /&gt;&lt;br /&gt;Refer the above link for more details. Thanks to Yaron for his help in advanceqtp.com</content><link rel='replies' type='application/atom+xml' href='http://innovativetesting.blogspot.com/feeds/2440547860654170357/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://innovativetesting.blogspot.com/2010/10/adding-scriptingdisctionary-object-in.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2797255279827086330/posts/default/2440547860654170357'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2797255279827086330/posts/default/2440547860654170357'/><link rel='alternate' type='text/html' href='http://innovativetesting.blogspot.com/2010/10/adding-scriptingdisctionary-object-in.html' title='Adding Scripting.Disctionary object in registry'/><author><name>MuraliKunda</name><uri>http://www.blogger.com/profile/13003543526387766775</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2797255279827086330.post-7727274997463938777</id><published>2010-10-04T00:47:00.000-07:00</published><updated>2010-10-04T00:53:52.646-07:00</updated><title type='text'>Retrieving data from an excel through Database connection</title><content type='html'>FileName = &quot;C:\Book1.xls&quot; &lt;br /&gt;        SheetName = &quot;Sheet1&quot; &lt;br /&gt;        vValue = &quot;Murali&quot; &lt;br /&gt;        &lt;br /&gt;        Set objConnection = CreateObject(&quot;ADODB.Connection&quot;) &lt;br /&gt;        Set objRecordSet = CreateObject(&quot;ADODB.Recordset&quot;) &lt;br /&gt;        objConnection.Open &quot;Provider=Microsoft.Jet.OLEDB.4.0;&quot; &amp; &quot;Data Source=&quot; &amp; FileName &amp; &quot;;&quot; &amp; &quot;Extended Properties=&quot;&quot;Excel 8.0;HDR=Yes;&quot;&quot;;&quot; &lt;br /&gt;        strQuery=&quot;update [&quot; &amp; SheetName &amp; &quot;$] Set &quot; &lt;br /&gt;        strQuery=strQuery &amp; &quot;Country=&#39;&quot; &amp; &quot;&#39;,&quot; &lt;br /&gt;        strQuery=strQuery &amp; &quot;City=&#39;&quot; &amp; &quot;&#39;&quot; &lt;br /&gt;        strQuery=strQuery &amp; &quot; where Name =&#39;&quot; &amp; vValue &amp;&quot;&#39;&quot; &lt;br /&gt;        msgbox strQuery &lt;br /&gt;        objRecordset.Open strQuery , objConnection, 3, 3, 1&lt;br /&gt;        &#39;Close &lt;br /&gt;        objConnection.Close &lt;br /&gt;        Set objRecordSet = Nothing</content><link rel='replies' type='application/atom+xml' href='http://innovativetesting.blogspot.com/feeds/7727274997463938777/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://innovativetesting.blogspot.com/2010/10/retrieving-data-from-excel-through.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2797255279827086330/posts/default/7727274997463938777'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2797255279827086330/posts/default/7727274997463938777'/><link rel='alternate' type='text/html' href='http://innovativetesting.blogspot.com/2010/10/retrieving-data-from-excel-through.html' title='Retrieving data from an excel through Database connection'/><author><name>MuraliKunda</name><uri>http://www.blogger.com/profile/13003543526387766775</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2797255279827086330.post-7194343896251797859</id><published>2010-10-04T00:24:00.000-07:00</published><updated>2010-10-04T00:47:07.217-07:00</updated><title type='text'>Associating a library file using QTP object model</title><content type='html'>Dim qApp &lt;br /&gt;Dim qLibs &lt;br /&gt; &lt;br /&gt;Set qApp = CreateObject(&quot;QuickTest.Application&quot;) &lt;br /&gt;qApp.Launch  &lt;br /&gt;qApp.Visible = True &lt;br /&gt; &lt;br /&gt;qApp.Open &quot;E:\Test1&quot;, False, False &#39; Open a test &lt;br /&gt;&lt;br /&gt;Set qLibs = qtApp.Test.Settings.Resources.Libraries &#39; Get &lt;br /&gt;the libraries collection object &lt;br /&gt;   qLibs.Add &quot;C:\Utilities.vbs&quot;, 1 &#39; Add the library to the &lt;br /&gt;collection &lt;br /&gt;&lt;br /&gt;qApp.Test.Save &lt;br /&gt;qApp.Quit &lt;br /&gt;Set qLibs = Nothing &lt;br /&gt;Set qApp = Nothing</content><link rel='replies' type='application/atom+xml' href='http://innovativetesting.blogspot.com/feeds/7194343896251797859/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://innovativetesting.blogspot.com/2010/10/associating-library-file-using-qtp.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2797255279827086330/posts/default/7194343896251797859'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2797255279827086330/posts/default/7194343896251797859'/><link rel='alternate' type='text/html' href='http://innovativetesting.blogspot.com/2010/10/associating-library-file-using-qtp.html' title='Associating a library file using QTP object model'/><author><name>MuraliKunda</name><uri>http://www.blogger.com/profile/13003543526387766775</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2797255279827086330.post-5042876016131211972</id><published>2010-10-04T00:21:00.000-07:00</published><updated>2010-10-04T00:23:55.493-07:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="current timezone"/><category scheme="http://www.blogger.com/atom/ns#" term="currenttimezone in QTP"/><title type='text'>Retrieving the current time zone information</title><content type='html'>Here is the simple code snippet to find out the current time zone&lt;br /&gt;&lt;br /&gt;Const HKEY_LOCAL_MACHINE = &amp;H80000002&lt;br /&gt;strComputer = &quot;.&quot;&lt;br /&gt;Set oReg=GetObject(&quot;winmgmts:{impersonationLevel=impersonate}!\\&quot; &amp; strComputer &amp; &quot;\root\default:StdRegProv&quot;)&lt;br /&gt;strKeyPath = &quot;SYSTEM\CurrentControlSet\Control\TimeZoneInformation&quot;&lt;br /&gt;strValueName = &quot;StandardName&quot;&lt;br /&gt;oReg.GetExpandedStringValue HKEY_LOCAL_MACHINE,strKeyPath, strValueName,strValue&lt;br /&gt;Set oReg=Nothing&lt;br /&gt;Msgbox(strValue)</content><link rel='replies' type='application/atom+xml' href='http://innovativetesting.blogspot.com/feeds/5042876016131211972/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://innovativetesting.blogspot.com/2010/10/retrieving-current-time-zone.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2797255279827086330/posts/default/5042876016131211972'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2797255279827086330/posts/default/5042876016131211972'/><link rel='alternate' type='text/html' href='http://innovativetesting.blogspot.com/2010/10/retrieving-current-time-zone.html' title='Retrieving the current time zone information'/><author><name>MuraliKunda</name><uri>http://www.blogger.com/profile/13003543526387766775</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2797255279827086330.post-1484799786001917862</id><published>2010-06-06T23:09:00.000-07:00</published><updated>2010-06-06T23:43:50.166-07:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="descriptive programming"/><category scheme="http://www.blogger.com/atom/ns#" term="Descriptive programming v/s object Repository"/><category scheme="http://www.blogger.com/atom/ns#" term="Object Repository"/><title type='text'>Object Repository v/s Descriptive Programming</title><content type='html'>While automating the application the most common question is Should we use Object Repository or Descriptive Programming.&lt;br /&gt;&lt;br /&gt;The answer is, It is completely dependent on the Application nature, size of the automation and the framework followed.&lt;br /&gt;&lt;br /&gt;Lets assume there is an application where in around 100 dynamic pages are there. In them there are several GUI elements(objects) are there. But most of the objects(and their properties) are same across multiple pages. Like date fields, input fields and web tables. But page titles are different.&lt;br /&gt;&lt;br /&gt;1)To automate this application If we go with OR approach we have to create a huge object repository and which intern occupies lot of memory and maintenance issues. &lt;br /&gt;&lt;br /&gt;2)If per action is used huge effort goes in merging the object Repository.&lt;br /&gt;&lt;br /&gt;3)If there are lot of dynamic objects  for example when user logged in, the user id is displayed as link in the home page. &lt;br /&gt;&lt;br /&gt;In the above scenarios Descriptive programming is the right approach.&lt;br /&gt;&lt;br /&gt;Problems with Descriptive programming&lt;br /&gt;1)If the descriptive objects are not created in a right approach it may result huge maintenance issue.&lt;br /&gt;2)Script generation would take time as the Object repository is not available.&lt;br /&gt;&lt;br /&gt;Some times due to framework limitations Descriptive programming cannot be used at that time the following ways can help to modify the objects in run time.&lt;br /&gt;&lt;br /&gt;-&gt; Use regular expression for the objects which are dynamic&lt;br /&gt;-&gt; Use SetToProperty to modify/add object property in run time.&lt;br /&gt;&lt;br /&gt;We will discuss more about SetToProperty in another post.&lt;br /&gt;&lt;br /&gt;The conclusion what I want to say is Object Repository or Descriptive programming both has their own pros/cons. As per the need one should choose the approach.&lt;br /&gt;&lt;br /&gt;And at the same time both approaches can be used in automation of any application.&lt;br /&gt;&lt;br /&gt;Using Descriptive Programming &lt;br /&gt;&lt;br /&gt;-&gt; Assume there is an object in a page the descriptive approach is&lt;br /&gt;Browser(&quot;micClass:=Browser,title:=XXX&quot;).page(&quot;title:=xxx&quot;).webbutton(&quot;text:=xyz&quot;).set &quot;abc&quot;&lt;br /&gt;&lt;br /&gt;The same also can be achieved&lt;br /&gt;set obj_browser = description.create()&lt;br /&gt;obj_browser(&quot;title&quot;).value = &quot;XXX&quot;&lt;br /&gt;&lt;br /&gt;set obj_browser = description.create()&lt;br /&gt;obj_browser(&quot;title&quot;).value = &quot;xxx&quot;&lt;br /&gt;&lt;br /&gt;I will discuss more about descriptive programming in another post. &lt;br /&gt;&lt;br /&gt;Feel free to contact me for any kind of queries mura.kunda@gmail.com</content><link rel='replies' type='application/atom+xml' href='http://innovativetesting.blogspot.com/feeds/1484799786001917862/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://innovativetesting.blogspot.com/2010/06/object-repository-vs-descriptive.html#comment-form' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2797255279827086330/posts/default/1484799786001917862'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2797255279827086330/posts/default/1484799786001917862'/><link rel='alternate' type='text/html' href='http://innovativetesting.blogspot.com/2010/06/object-repository-vs-descriptive.html' title='Object Repository v/s Descriptive Programming'/><author><name>MuraliKunda</name><uri>http://www.blogger.com/profile/13003543526387766775</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2797255279827086330.post-4538101382986041531</id><published>2010-05-10T23:37:00.000-07:00</published><updated>2010-05-10T23:55:25.953-07:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="Actions"/><category scheme="http://www.blogger.com/atom/ns#" term="Actions v/s Functions"/><category scheme="http://www.blogger.com/atom/ns#" term="Differences between Actions and Functions"/><category scheme="http://www.blogger.com/atom/ns#" term="Fucntions"/><category scheme="http://www.blogger.com/atom/ns#" term="QTP Actions"/><category scheme="http://www.blogger.com/atom/ns#" term="QTP Functions"/><title type='text'>Action v/s Function</title><content type='html'>When developing an automation framework everyone thinks whether they should go for Action based Framework or Function based Framework.&lt;br /&gt;&lt;br /&gt;Both of them has their own Pros/Cons. But Function based framework is more robust and flexible and easily maintainable. Depending on the Licensing feasibility and Resource skill set either one can decide Functions or Actions.&lt;br /&gt;&lt;br /&gt;Major Differences&lt;br /&gt;&lt;span style=&quot;font-weight:bold;&quot;&gt;Actions&lt;/span&gt;&lt;br /&gt;1.Actions are part of Quick Test Professional&lt;br /&gt;2.Actions has their own object Repositories and Data sheets. Handling Object     Repositories and Data Sheets are much easier.&lt;br /&gt;3.Parameters to an Action can be passed through only Input parameters and these parameters have to declared in the Action settings.&lt;br /&gt;4.Action always return Boolean. If any custom value needs to be returned then it has to be returned as Output parameter which is again part of Action Setting&lt;br /&gt;5.Well Integrated with QTP. It occupies much more memory compare to Functions&lt;br /&gt;6.Cannot pass the value By Ref or By Val.&lt;br /&gt;7.QTP Intellisense is available&lt;br /&gt;8.QTP Editor is required to write the code.&lt;br /&gt;&lt;br /&gt;Functions&lt;br /&gt;1.Purely part of VBScripting&lt;br /&gt;2.No Object Repository or Data Sheets are available &lt;br /&gt;3.Parameters can be passed as Byval or ByRef&lt;br /&gt;4.Only one variable can be returned.&lt;br /&gt;5.Independent to QTP&lt;br /&gt;6.Occupies Less memory intern increases the performance of the Execution&lt;br /&gt;7.Need to be associated with QTP&lt;br /&gt;8.Scripting would be slow as QTP Intellisense is not available&lt;br /&gt;9.QTP License is not required as we can use simple NotePad as an Editor</content><link rel='replies' type='application/atom+xml' href='http://innovativetesting.blogspot.com/feeds/4538101382986041531/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://innovativetesting.blogspot.com/2010/05/action-vs-function.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2797255279827086330/posts/default/4538101382986041531'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2797255279827086330/posts/default/4538101382986041531'/><link rel='alternate' type='text/html' href='http://innovativetesting.blogspot.com/2010/05/action-vs-function.html' title='Action v/s Function'/><author><name>MuraliKunda</name><uri>http://www.blogger.com/profile/13003543526387766775</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2797255279827086330.post-4008400220970905891</id><published>2010-05-03T06:54:00.000-07:00</published><updated>2010-05-03T07:03:50.634-07:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="Mail with VBScript"/><category scheme="http://www.blogger.com/atom/ns#" term="QCAPI"/><category scheme="http://www.blogger.com/atom/ns#" term="QTPMail"/><category scheme="http://www.blogger.com/atom/ns#" term="sendmail"/><title type='text'>Sending a mail through QC using API</title><content type='html'>The below function helps to send mail from QC automatically with attachment&lt;br /&gt;&lt;br /&gt;Public function sendMail(toMail,fromMail,subj,body,attachment)&lt;br /&gt; Set qcCon = qcutil.QCConnection&lt;br /&gt; qcCon.sendmail toMail,fromMail,subj,body&lt;br /&gt; Set qcCon = nothing&lt;br /&gt;End Function</content><link rel='replies' type='application/atom+xml' href='http://innovativetesting.blogspot.com/feeds/4008400220970905891/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://innovativetesting.blogspot.com/2010/05/sending-mail-through-qc-using-api.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2797255279827086330/posts/default/4008400220970905891'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2797255279827086330/posts/default/4008400220970905891'/><link rel='alternate' type='text/html' href='http://innovativetesting.blogspot.com/2010/05/sending-mail-through-qc-using-api.html' title='Sending a mail through QC using API'/><author><name>MuraliKunda</name><uri>http://www.blogger.com/profile/13003543526387766775</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2797255279827086330.post-2425363988590971852</id><published>2010-05-03T06:32:00.000-07:00</published><updated>2010-05-03T07:05:05.392-07:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="connecting QC with VBScript"/><category scheme="http://www.blogger.com/atom/ns#" term="connectQC"/><category scheme="http://www.blogger.com/atom/ns#" term="QCAPI"/><category scheme="http://www.blogger.com/atom/ns#" term="QTP with QC"/><title type='text'>Connecting and disconnectingto QC through API</title><content type='html'>The following function helps to connect QC&lt;br /&gt;&lt;br /&gt;public function connectToQC(qcUserName, qcPwd, qcURL, qcDomain, qcProject)&lt;br /&gt;  Set tdc = CreateObject(&quot;TDApiOle80.TDConnection&quot;)&lt;br /&gt;  tdc.InitConnectionEx qcURL&lt;br /&gt;  tdc.Login qcUsername, qcPwd&lt;br /&gt;  tdc.Connect qcDomain, qcProject&lt;br /&gt;  if tdc.connected then&lt;br /&gt;     connectToQC = 0&lt;br /&gt;     else&lt;br /&gt;     connectToQC = 1&lt;br /&gt;  end if&lt;br /&gt; set tdc = nothing&lt;br /&gt;end function&lt;br /&gt;&lt;br /&gt;The following function helps to disconnect from QC&lt;br /&gt;&lt;br /&gt;public function disconnectQC()&lt;br /&gt;    Set tdc = CreateObject(&quot;TDApiOle80.TDConnection&quot;)&lt;br /&gt;    If tdc.Connected Then&lt;br /&gt;       tdc.Disconnect&lt;br /&gt;    End If&lt;br /&gt;    If tdc.LoggedIn Then&lt;br /&gt;       tdc.Logout&lt;br /&gt;    End If&lt;br /&gt; set tdc = nothing&lt;br /&gt;end function</content><link rel='replies' type='application/atom+xml' href='http://innovativetesting.blogspot.com/feeds/2425363988590971852/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://innovativetesting.blogspot.com/2010/05/connecting-to-qc-through-api.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2797255279827086330/posts/default/2425363988590971852'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2797255279827086330/posts/default/2425363988590971852'/><link rel='alternate' type='text/html' href='http://innovativetesting.blogspot.com/2010/05/connecting-to-qc-through-api.html' title='Connecting and disconnectingto QC through API'/><author><name>MuraliKunda</name><uri>http://www.blogger.com/profile/13003543526387766775</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2797255279827086330.post-2865887076111026325</id><published>2010-04-20T22:52:00.000-07:00</published><updated>2010-04-21T00:03:30.714-07:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="alternative for datatable"/><category scheme="http://www.blogger.com/atom/ns#" term="Database with QTP"/><category scheme="http://www.blogger.com/atom/ns#" term="Excel with QTP"/><category scheme="http://www.blogger.com/atom/ns#" term="retreiving data from excel"/><category scheme="http://www.blogger.com/atom/ns#" term="various way to retrieve data from excel"/><title type='text'>Diiferent ways accessing data from an excel file</title><content type='html'>There are mainly 3 ways that we can access data from an excel file. Before using the below methods please create file calles Sample.xls in C:\ Drive&lt;br /&gt;&lt;br /&gt;1. Data table&lt;br /&gt;2. Using Excel Application COM methods&lt;br /&gt;3. Using Database Connection methods.&lt;br /&gt;&lt;br /&gt;1. Data Table : &lt;br /&gt;        Data Table is the quickest way to access data from any excel file and there are couple of methods provided by QTP. I am listing few of the methods.&lt;br /&gt;1. datatable.import&lt;br /&gt;2. datatable.importsheet&lt;br /&gt;3. datatable.addsheet&lt;br /&gt;4. datatable.getSheet&lt;br /&gt;QTP has comprehensive help on the above topic&lt;br /&gt;&lt;br /&gt;2. Excel Application COM methods&lt;br /&gt;        The second of accessing data from an excel file is by creating a Excel instance and with the help of that we can access the data of an excel.&lt;br /&gt;Creating a excel file and sheet&lt;br /&gt;   Set xlObj= CreateObject(&quot;Excel.Application&quot;) &lt;br /&gt;   Set xlBook = xlObj.Workbooks.Add&lt;br /&gt;   set xlSheet = xlBook.worksheets.Add&lt;br /&gt;   xlObj.worksheets(4).name = &quot;SampleSheet&quot;&lt;br /&gt;   xlBook.SaveAs(&quot;C:\sample.xls&quot;) &lt;br /&gt;   set xlObj = nothing&lt;br /&gt;   set xlBook = nothing&lt;br /&gt;   set xlSheet = nothing&lt;br /&gt;&lt;br /&gt;3. Excel application with Database connection&lt;br /&gt;    Const varStatic = 3&lt;br /&gt;Const varLock = 3&lt;br /&gt;Const varCmdText = &amp;H0001&lt;br /&gt;&lt;br /&gt;Set objConnection = CreateObject(&quot;ADODB.Connection&quot;)&lt;br /&gt;Set objRecordSet = CreateObject(&quot;ADODB.Recordset&quot;)&lt;br /&gt;&lt;br /&gt;objConnection.Open &quot;Provider=Microsoft.Jet.OLEDB.4.0; Data Source=C:\sample.xls; Extended Properties=&quot;&quot;Excel 8.0;HDR=Yes;&quot;&quot;;&quot; &lt;br /&gt;&lt;br /&gt;objRecordset.Open &quot;Select * FROM [Sheet1$]&quot;, objConnection, varStatic, varLock, varCmdText&lt;br /&gt;&lt;br /&gt;Do Until objRecordset.EOF&lt;br /&gt;    print  objRecordset.Fields.Item(&quot;ColumnName1&quot;)&lt;br /&gt;   &lt;br /&gt;    objRecordset.MoveNext&lt;br /&gt;Loop&lt;br /&gt;&lt;br /&gt;Set objConnection = nothing&lt;br /&gt;Set objRecordSet = nothing</content><link rel='replies' type='application/atom+xml' href='http://innovativetesting.blogspot.com/feeds/2865887076111026325/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://innovativetesting.blogspot.com/2010/04/diiferent-ways-accessing-data-from.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2797255279827086330/posts/default/2865887076111026325'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2797255279827086330/posts/default/2865887076111026325'/><link rel='alternate' type='text/html' href='http://innovativetesting.blogspot.com/2010/04/diiferent-ways-accessing-data-from.html' title='Diiferent ways accessing data from an excel file'/><author><name>MuraliKunda</name><uri>http://www.blogger.com/profile/13003543526387766775</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2797255279827086330.post-6404962839512105557</id><published>2010-04-08T02:27:00.000-07:00</published><updated>2010-04-20T22:47:14.373-07:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="COM object with DLL"/><category scheme="http://www.blogger.com/atom/ns#" term="COM with QTP"/><category scheme="http://www.blogger.com/atom/ns#" term="Creating Custom DLL with QTP"/><category scheme="http://www.blogger.com/atom/ns#" term="creating DLL"/><category scheme="http://www.blogger.com/atom/ns#" term="DLL with QTP"/><title type='text'>Creating custom dll file and using the same in QTP</title><content type='html'>Hi&lt;br /&gt;&lt;br /&gt;Here I am discussing how to create a custom dll files using C#.&lt;br /&gt;&lt;br /&gt;Pre requisites: Install Visual studio 2005 or 2008&lt;br /&gt;&lt;br /&gt;&lt;ol&gt;&lt;br /&gt;&lt;li&gt;Create Class library file&lt;/li&gt;&lt;br /&gt;&lt;li&gt;Create a class and their methods&lt;/li&gt;&lt;br /&gt;&lt;li&gt;Make the class as COM visible&lt;/li&gt;&lt;br /&gt;&lt;li&gt;Save it and build the file&lt;/li&gt;&lt;br /&gt;&lt;li&gt;Register the DLL with Registry using RegASM &lt;/li&gt;&lt;br /&gt;&lt;li&gt;Use the DLL in the QTP code.&lt;/li&gt;&lt;/ol&gt;&lt;br /&gt;Let&#39;s see the explanation of each step&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;1. Create Class library file :&lt;/strong&gt;&lt;br /&gt;&lt;br /&gt;Goto File-&gt;Add-&gt;New Project and select Class library file&lt;br /&gt;Enter the Library File name&lt;br /&gt;I am giving a class library name as &quot;Framework&quot;&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;2.Create a class and their methods&lt;/strong&gt;&lt;br /&gt;Write the code as below in the Library file&lt;br /&gt;&lt;br /&gt;public class Utilitiess&lt;br /&gt;{&lt;br /&gt;public int i;&lt;br /&gt;public int add(int a, int b)&lt;br /&gt;{&lt;br /&gt;return a+b;&lt;br /&gt;}&lt;br /&gt;public int subtract(int a, int b)&lt;br /&gt;{&lt;br /&gt;return a - b;&lt;br /&gt;}&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;3. Make the class as COM visible&lt;/strong&gt;&lt;br /&gt;3.1 Right click on the Class Libray name.&lt;br /&gt;3.2 In our case Right click on &quot;Framework&quot;&lt;br /&gt;3.3 Click on Applications tab and Clcik on Assembly Information button&lt;br /&gt;3.4 Select making com visible check box&lt;br /&gt;3.5 Clck Save all button&lt;br /&gt;4. Build the project&lt;br /&gt;&lt;strong&gt;5. Registering the DLL with Registry&lt;/strong&gt;&lt;br /&gt;5.1 The DLL file would be stored in the Visual Studio Debug folder&lt;br /&gt;5.2 Copy the DLL files to .NET framework tool kit folder&lt;br /&gt;5.3 Open SDK Command prompt by selecting Start-&gt;Programs-&gt;Microsfot .net Framework&lt;br /&gt;5.4 Entet the command RegAsm &lt;dll&gt;&lt;br /&gt;&lt;strong&gt;6.Using the DLL in QTP&lt;/strong&gt;&lt;br /&gt;6.1 Use the following code to use the code in the code&lt;br /&gt;set obj = createobject(&quot;Framework.Utilities&quot;)&lt;br /&gt;i = obj.Add(2,3)&lt;br /&gt;print i</content><link rel='replies' type='application/atom+xml' href='http://innovativetesting.blogspot.com/feeds/6404962839512105557/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://innovativetesting.blogspot.com/2010/04/creating-custom-dll-file-and-using-same.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2797255279827086330/posts/default/6404962839512105557'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2797255279827086330/posts/default/6404962839512105557'/><link rel='alternate' type='text/html' href='http://innovativetesting.blogspot.com/2010/04/creating-custom-dll-file-and-using-same.html' title='Creating custom dll file and using the same in QTP'/><author><name>MuraliKunda</name><uri>http://www.blogger.com/profile/13003543526387766775</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry></feed>