Wednesday, 9 January 2019

VBScript Passing Parameters

VBScript Passing Parameters


This guide discusses parameter passing in VBScript.

Overview

In VBScript, there are two ways values can be passed: ByVal and ByRef. Using ByVal, we can pass arguments as values whereas with the use of ByRef, we can pass arguments are references. This is the obvious bit, but, how do these two differ in practice?

Passing By Value

Consider the following code snippet:
Function GetValue(ByVal var)
  var = var + 1
End Function

Dim x: x = 5

'Pass the variable x to the GetValue function ByVal
Call GetValue(x)

Call Rhino.Print("x = " & CStr(x))
When you run the block of code above, you will get the following output:
x = 5
In other words, when we passed the variable x (ByVal) to the function GetValue, we were simply passing a copy of the variable x. When GetValue executes, var stores a copy of the variable x and increments itself by 1. Therefore, because what we are passing to GetValue is a copy of x, it cannot be modified.

Passing By Reference

Now, let’s look at another way of passing variables: By Reference.
Consider the following code snippet:
Function GetReference(ByRef var)
  var = var + 1
End Function

Dim x: x = 5

'Pass the variable x to the GetReference function ByRef
Call GetReference(x)

Call Rhino.Print("x = " & CStr(x))
When you run the block of code above, you will get the following output:
x = 6
Variable x was increment by 1. But why was x incremented? Only var must have incremented by 1, and not x? Well, that is the core concept behind passing variables by reference.
When the function GetReference executes, var becomes a reference of x, and therefore, any changes made to var would impact x. So if var increments itself by 1, so would x. If var becomes 0 (zero), so would x.
Let’s look at another example:
Function GetReference(ByRef arrArray)
  ReDim Preserve arrArray(UBound(arrArray)+1)
  arrArray(UBound(arrArray)) = 2
End Function

Dim newArray: newArray = Array(0, 1)
Call GetReference(newArray)
Will the size of newArray increase? Look at:
' new size: 2
Call Rhino.Print(UBound(newArray))

' new elements: 0, 1, 2
For x = LBound(newArray) To UBound(newArray)
  Call Rhino.Print(newArray(x))
Next
Since newArray was passed as a reference to the GetReference function, the change made to arrArray was reflected upon newArray as well. Thus, sizes of both arrays incremented by 1.
Is there a way to pass variables ByRef and still avoid this? Yes, there is. The answer lies in passing temporary variables…

ByRef & Temporary Variables

The advantage of using this approach is that you can pass temporary variables to n number of functions accepting arguments as reference, without having the base (original) variables modified. This is a good (and recommended) approach, since your original variables stay intact and you do not lose track of them when working with extensive function libraries. Please see a simple demonstration of this approach below:
Function GetReference(ByRef var)
  var = var + 1
End Function

Dim x: x = 5
Dim y: y = x

Call GetReference(y)

' Returns 5 (x remains unchanged)
Call Rhino.Print(x)
' Returns 6   
Call Rhino.Print(y)
Above, you will notice that as y became a temporary variable and was passed to GetReference, only it was modified. The variable x was unchanged. Thus, it’s recommended to use temporary variables when passing variables as reference.

Summary

Here is a summary:
  • (ByVal) Arguments do not change when passed by value.
  • (ByRef) If the function parameter is modified, it will have the same impact on the parameter that was passed by reference.
  • (ByRef) Because the passed parameters can be changed, we can pass multiple values from functions.
  • (ByRef) In a large function library, it can be hard to tell where the value was changed and what function the variable was supposed to perform.

Tuesday, 25 December 2018

Basic FrameWork:Basic FSO


Function Cleanup()
Systemutil.CloseDescendentProcesses
Systemutil.CloseProcessByName("chrome.exe")

End Function


Function CreateFolder(strFolderName)
    Set ObjFSO=CreateObject("Scripting.FileSystemObject")
If Not ObjFSO.FolderExists(strFolderName)  Then

ObjFSO.CreateFolder(strFolderName)


End If
Set ObjFSO=Nothing

End Function

'Function OpenFileForWriting(strFilename)
'    Set ObjFSO=CreateObject("Scripting.FileSystemObject")
'     ObjFSO.Op
'
'
' End If
'Set ObjFSO=Nothing
'
'End Function
'




Function GetExecutionTime(StartTime,EndTime)
'@ Description : This will get the execution time
' This function is called by Class_Terminate

'Seperate hours, minutes and seconds
StartHour = Hour(StartTime)
StartMin = Minute(StartTime)
StartSec = Second(StartTime)
EndHour = Hour(EndTime)
EndMin = Minute(EndTime)
EndSec = Second(EndTime)

'Convert all in to seconds
StartingSeconds = (StartSec + (StartMin * 60) + (StartHour * 3600))
EndingSeconds = (EndSec + (EndMin * 60) + (EndHour * 3600))

'Use subtraction to know the execution time
GetExecutionTime = EndingSeconds - StartingSeconds
End Function





Function CreateFile(strFileName)
    Set ObjFSO=CreateObject("Scripting.FileSystemObject")
If Not ObjFSO.fileExists(strFileName)  Then

ObjFSO.CreateTextFile(strFileName)
Set ObjFSO=Nothing

End If

End  Function

Function ReportEvent(EventType,EventDescription)

If EventType="PASS" Then



End If

If EventType="FAIL" Then


End If


If EventType="DONE" Then


End If

End Function

Basic FrameWork: Action Driver

On Error Resume Next
'SerialNumber=0

Function CheckExecutionFlag()
strExFlag=Ucase(datatable.Value("EXECUTE"))
If ucase(strExFlag)="X" Then
CheckExecutionFlag=Datatable.GetCurrentRow
End If
End Function

CurrentRow=CheckExecutionFlag()
datatable.SetCurrentRow(CurrentRow)
TotalRows=Datatable.GetRowCount

'Function TakeSnap(IterationFolder)
'
'SerialNumber=SerialNumber+1
'Filename=IterationFolder&"\"&SerialNumber&"."&"png"
'desktop.CaptureBitmap Filename,False
'
'End  Function
'
IterationFolder=objectname.LocalResultsParent&"\"&CurrentRow&" Iteration"
CreateFolder(IterationFolder)

'CurrentRow=CheckExecutionFlag()
IterationFile=IterationFolder&"\"&CurrentRow&"."&"html"
objectname.IterationFile=IterationFile
CreateFile(IterationFile)
objectname.WriteHeader IterationFile
objectname.IterationFolder=IterationFolder

If not isNumeric(CurrentRow) Then


Else
Systemutil.Run "Chrome.exe","https://opensource-demo.orangehrmlive.com"
'objectname.WriteReport "0","Launched Browser"

objectname.ReportEvent1 "0","Launched Browser","Launched Browser"

'Browser("Rediff.com: Online Shopping,").FullScreen
'TakeSnap IterationFolder
'Browser("Rediff.com: Online Shopping,").Page("Rediff.com: Online Shopping,").Link("Sign in").ClickNew
'objectname.WriteReport "Pass","Signin Page"
'
'TakeSnap IterationFolder
'Browser("Rediff.com: Online Shopping,").Page("Rediffmail").WebEdit("login").SetNew "W_USERNAME"
'Browser("Rediff.com: Online Shopping,").Page("Rediffmail").WebEdit("passwd").Set "W_PASSWORD"
'objectname.WriteReport "Pass","Signin page shwon"
'TakeSnap IterationFolder

'Cleanup()



'End If
'Browser("Rediff.com: Online Shopping,").Page("Rediffmail").WebButton("Go").Click




'Next



'Set ObjFSO=CreateObject("Scripting.FileSystemObject")
 
'Function OpenFileForWriting(strFilename)
'    Set ObjFSO=CreateObject("Scripting.FileSystemObject")
'     ObjFSO.
'
'
' End If
'Set ObjFSO=Nothing
'
'End Function

Login()

Function Login()

Browser("Rediff.com: Online Shopping,").Page("OrangeHRM").WebEdit("txtPassword").SetNew "W_PASSWORD"
Browser("Rediff.com: Online Shopping,").Page("OrangeHRM").WebEdit("txtUsername").SetNew "W_USERNAME"
'TakeSnap IterationFolder
Browser("Rediff.com: Online Shopping,").Page("OrangeHRM").WebButton("Login").ClickNew

If Browser("Rediff.com: Online Shopping,").Page("OrangeHRM").Link("Welcome Admin").Exist(60) Then
    Browser("Rediff.com: Online Shopping,").Page("OrangeHRM").Sync
'objectname.WriteReport "Pass","Signin Success"
objectname.ReportEvent1 "0","Login Step","Login Success"

'Launched Browser
' Reportevent
'ReportEvent "PASS","steep","test"
'TakeSnap IterationFolder
Else
   ' objectname.WriteReport "FAIL","Signin FAIL"
  objectname.ReportEvent1 "1","Login Step","Login Failed"
    'TakeSnap IterationFolder

End If
End Function

'msgbox IterationFolder
filename= IterationFolder&"\"&"Data"&"."&"xls"
Datatable.Export cstr(filename)

'msgbox err.Description

Cleanup()
objectname.iIndex=1
objectname.SerialNumber=0

'Browser("Rediff.com: Online Shopping,").ClearCache
'Browser("Rediff.com: Online Shopping,").DeleteCookies
'strWND=Browser("Rediff.com: Online Shopping,").Object.HWND
'Window("hwnd="&strWND).maximize

End  If

'
'strWND=Browser("Rediff.com: Online Shopping,").GetROProperty("hwnd")
'Window("hwnd="&strWND).maximize
'

Basic FrameWork: CLass File

Set objectname = New ClassDemo

Class ClassDemo
Public LocalResults
Public strTestName
Public LocalResultsParent
Public SerialNumber
Public IterationFile
Public iIndex 'fot test step in report

Public IterationFolder

Private Sub Class_Initialize(  )
'Initalization code goes here
iIndex=1
SerialNumber=0
LocalResults="C:\Results\"
strTestName=Environment.Value("TestName")&"_"
LocalResultsParent=LocalResults&strTestName&FormattedTime()
CreateFolder(LocalResultsParent)
Cleanup()

'Systemutil.Run "Chrome.exe","https://opensource-demo.orangehrmlive.com"
'Browser("Rediff.com: Online Shopping,").ClearCache
'Browser("Rediff.com: Online Shopping,").DeleteCookies
'strWND=Browser("Rediff.com: Online Shopping,").GetROProperty("hwnd")
'Window("hwnd="&strWND).maximize
'


'print LocalResultsParent

End Sub

'When Object is Set to Nothing
Private Sub Class_Terminate(  )
'Termination code goes here

'Msgbox "Done"
End Sub

public Function FormattedTime()

FormattedTime=Replace(Replace(now(),"/","-"),":","-")
End Function

Public Function SerialNumbr()


End Function

'End Function


Public Function WriteHeader(IterationFile)

Set objFSO=CreateObject("Scripting.FileSystemObject")
Set ofile=objFSO.OpenTextFile(IterationFile,8)

ofile.WriteLine ("<html><body  bgcolor= white>")
ofile.WriteLine ("<table align=center width=900 border=0><tr><td align=center bgcolor=#3869B5><font color=white><b>"&clsResultName&" Test Results</b></font></td></tr></table>")
ofile.WriteLine ("<br>")
ofile.WriteLine ("<table align=center width=900 border=0>")
ofile.WriteLine ("<table align=center width= 900>")
ofile.WriteLine ("<tr bgcolor=#3869B5>")
ofile.WriteLine ("<td><font color=white><b>S.No</b></font></td>")
ofile.WriteLine ("<td><font color=white><b>Step Name</b></font></td>")
ofile.WriteLine ("<td><font color=white><b>Description</b></font></td>")
ofile.WriteLine ("<td><font color=white><b>Status</b></font></td>")
ofile.WriteLine ("<td><font color=white><b>ScreenShot</b></font></td></tr>")

ofile.Close()
End  Function





Public Function WriteReport (Status,StepDesc)

Set objFSO=CreateObject("Scripting.FileSystemObject")

'msgbox IterationFile

Set ofile=objFSO.OpenTextFile(IterationFile,8)



'ofile.Close()

'Set objFSO=nothing

'ofile.WriteLine ("<html><body  bgcolor= white>")
'ofile.WriteLine ("<table align=center width=900 border=0><tr><td align=center bgcolor=#3869B5><font color=white><b>"&clsResultName&" Test Results</b></font></td></tr></table>")
'ofile.WriteLine ("<br>")
'ofile.WriteLine ("<table align=center width=900 border=0>")
'
'ofile.WriteLine ("<table align=center width= 900>")
' ofile.WriteLine ("<tr bgcolor=#3869B5>")
' ofile.WriteLine ("<td><font color=white><b>S.No</b></font></td>")
' ofile.WriteLine ("<td><font color=white><b>Step Name</b></font></td>")
' ofile.WriteLine ("<td><font color=white><b>Description</b></font></td>")
' ofile.WriteLine ("<td><font color=white><b>Status</b></font></td>")
' ofile.WriteLine ("<td><font color=white><b>ScreenShot</b></font></td></tr>")

ofile.Writeline(cstr(Status)& " "&cstr(StepDesc)&"<br>")

Ofile.Close()


Set objFSO=Nothing

End  Function



Function OpenFileForWriting(strFilename)
    Set ObjFSO=CreateObject("Scripting.FileSystemObject")
Set Ofile=  ObjFSO.OpenTextFile(strFilename,8)
Ofile.Write("test")
Set ObjFSO=Nothing

'End If
Set ObjFSO=Nothing

End Function



Function  ReportEvent1(qEventStatus,sReportStepName,sDetails)

'@ Description : Report result for each statement
' This functions will called when ever there is a statement reporter.reportevent
' This function is called by QTP script/function
'Syntax : Reporter.ReportEvent micFail,"StepName",StepDescription"

'Event status are the QTP constants
'Status string and status color assigned based on the constant value

Set objFSO=CreateObject("Scripting.FileSystemObject")

'msgbox IterationFile

Set ofile=objFSO.OpenTextFile(IterationFile,8)


Select case qEventStatus
case 3
cEventStatus="WARNING"
reportColor="FF9900"
Case 2
cEventStatus="DONE"
reportColor="#000080"
case 1
cEventStatus="FAIL"
reportColor="CC0000"
case 0
cEventStatus="PASS"
reportColor="#000080"
End Select

'Prepare Html code for each statement
HTMLStepStart="<TR bgColor=#e4f0ff>"
HTMLStepIndex="<td align='center' bgcolor='#E4F0FF'><font color="&reportColor&">"&iIndex&"</font></td>"
HTMLStepName="<td bgcolor='#E4F0FF'><font color="&reportColor&">"&sReportStepName&"</font></td>"
HTMLStepDescription="<td bgcolor=#E4F0FF><font color="&reportColor&">"&sDetails&"</font></td>"
HTMLStepStatus="<td bgcolor=#E4F0FF><font color= "&reportColor&">"&cEventStatus&"</font></td>"

' 'Capture Bitmap based on Step Status
' 'If no creation time specified then capture 0th browser screenshot
If ucase(cEventStatus)="FAIL" Then
' eImageFilePath=CreateImageFilePath
               

eImageFilePath= TakeSnap(IterationFolder)
            End If
' If BrowserCreationTimeIndex="" Then
' BrowserCreationTimeIndex=0
' End If
'
' 'If no browser found capture desktop screenshot
' If Browser("creationtime:="&BrowserCreationTimeIndex).Exist then
' Browser("creationtime:="&BrowserCreationTimeIndex).CaptureBitmap eImageFilePath,true
' Else
' Desktop.CaptureBitmap eImageFilePath,true
' BrowserCreationTimeIndex=""
' End If
' End If
'
' 'prepare Image file Html Code
' If eImageFilePath<>"" Then
' HTMLStepScreenPath="<td bgcolor=#E4F0FF><a href='"&eImageFilePath&"' target="""">View Error</a></td>"

HTMLStepScreenPath="<td bgcolor=#E4F0FF><a href='"&eImageFilePath&"' target="""">View Error</a></td>"


' else
' HTMLStepScreenPath="<td bgcolor=#E4F0FF>-</td>"
' End If

'Combine All html step code and write in to html file
HTMLStepEnd="</TR>"
HTMLStep=HTMLStepStart&HTMLStepIndex&HTMLStepName&HTMLStepDescription&HTMLStepStatus&HTMLStepScreenPath&HTMLStepEnd
ofile.WriteLine(HTMLStep)

'Parallelly Send QTP result with the stored qReporter object
' qReporter.ReportEvent qEventStatus,sReportStepName,sDetails

'Increase step index for the use of next statement
iIndex=iIndex+1

'Make eImageFilePath to empty for the use of next error image
eImageFilePath=""


ofile.Close
Set objFSO=Nothing

End Function


public Function TakeSnap(IterationFolder)

SerialNumber=SerialNumber+1
Filename=IterationFolder&"\"&SerialNumber&"."&"png"
desktop.CaptureBitmap Filename,False
TakeSnap=Filename
End  Function
'




End Class






Basic FrameWork Functions: Webmethods Overloading

RegisterUserFunc "Link","ClickNew","ClickNew"
RegisterUserFunc "WebEdit","SetNew","SetNew"
RegisterUserFunc "Webbutton","ClickNew","ClickNew"

Function SetNew(obj,Parameter)
On Error Resume Next
ParameterValue=Datatable.Value(cstr(Parameter))

If Ucase(trim(ParameterValue))="<SKIP>" Then

Else

obj.Set ParameterValue
If Err.Number<>0 Then


objectname.ReportEvent1 "1","Could not write "&ParameterValue,""&err.description
'objectname.ReportEvent1 "0","clicking link","Cliked "&strLogicalName

Else

objectname.ReportEvent1 "2","Entered "&ParameterValue &"in "&obj.GetTOProperty("name"),"enter value"

'objectname.ReportEvent1 "0","Login Step","Login Success"
End If

End If

End Function

Function ClickNew(objlink)
       On Error Resume Next
    objlink.Click
    strLogicalName= objlink.GetTOProperty("name")
If err.number<>0 Then

' msgbox Err.Description&""

objectname.ReportEvent1 "1","clicking link",""&err.Description

Else
objectname.ReportEvent1 "0","clicking link","Cliked "&strLogicalName

End If



End Function



Saturday, 3 February 2018

Utility Functions

Class Report

Public TestName,ResultFolder
Public objfso,objfile
Public objExl


Private Sub Class_Initialize()
   
    TestName=Environment.Value("TestName")
    ResultFolder=Environment.Value("ResultDir")
   
    msgbox "Hi"
   
End Sub


   




Sub Class_Terminate()


   
End Sub

Function GetExcelRowCount(strExcelFileName,strSheetName)

On Error Resume Next
Set objExl=CreateObject("Excel.Application")

'On error Resume Next
Set objwb=objExl.Workbooks.Open(strExcelFileName)
'If Err.Number<>0 Then
   
GetExcelRowCount="Error Occured While Opening Excel Workbook."
'Exit Function
'End If

Set objws=objwb.Worksheets(strSheetName)
If Err.Number<>0 Then
GetExcelRowCount="Error Occured While Opening Excel Workbook or WorkSheet"
Exit Function

Else

GetExcelRowCount=objws.UsedRange.Rows.Count

End If



Err.Reset

objexl.Quit

   
End Function


   
   
'End Function



Function ReportGenerator()

'  CreateFile
'  
'  CreateHeader
'  
'  WriteLog
 
     
  End Function

   






Function Maximise(objBrowser)


Window("hwnd:="&objBrowser.GetROProperty("hwnd")).Maximize
   
   
   
End Function





Function WriteXml(steXmlFileName,strNodeHierarchy)

Set xmlDoc = CreateObject("Microsoft.XMLDOM")
xmlDoc.Async = "False"

xmlDoc.Load(steXmlFileName)

If xmlDoc.ParseError.ErrorCode<>0 then

Print "XML parsing Error:"

WriteXml=False

End If

Set colNodes=xmlDoc.selectNodes(strNodeHierarchy)

Set colNodes=xmlDoc.selectNodes(strNodeHierarchy)

For Each objNode in colNodes
   objNode.Text = Date
Next
WriteXml=True
xmlDoc.Save steXmlFileName

Set xmlDoc=Nothing   


End Function

Function ReadXmlNode(steXmlFileName,strNodeHierarchy)

Set xmlDoc = CreateObject("Microsoft.XMLDOM")
xmlDoc.Async = "False"
xmlDoc.Load(steXmlFileName)

If xmlDoc.ParseError.ErrorCode<>0 then
Print "XML parsing Error:"
ReadXmlNode="XML parsing Error"
End If

Set colNodes=xmlDoc.selectNodes(strNodeHierarchy)

If colNodes.Length=1 Then
ReadXmlNode=colNodes.item(i).Text

Else
ReadXmlNode="Node Does Not Exist"

End If
'For Each objNode in colNodes
'
'            
'            msgbox objNode.Text &"Reading Node Value"
'            
'            If Trim(ReadXmlNode)="" Then
'            Msgbox "Node does not exists or Node Value is Blank. Exiting the function"
'            ReadXmlNode="Bad Data"
'            Exit Function 
'            End If
'Next
'
'ReadXmlNode=ReadData

xmlDoc.Save steXmlFileName
Set xmldoc=Nothing

End function


Function WriteXml(steXmlFileName,strNodeHierarchy)

Set xmlDoc = CreateObject("Microsoft.XMLDOM")
xmlDoc.Async = "False"

xmlDoc.Load(steXmlFileName)

If xmlDoc.ParseError.ErrorCode<>0 then

Print "XML parsing Error:"

WriteXml=False

End If

Set colNodes=xmlDoc.selectNodes(strNodeHierarchy)

Set colNodes=xmlDoc.selectNodes(strNodeHierarchy)

For Each objNode in colNodes
   objNode.Text = Date
Next
WriteXml=True
xmlDoc.Save steXmlFileName

Set xmlDoc=Nothing   
End Function

Function ReadXmlNode(steXmlFileName,strNodeHierarchy)

Set xmlDoc = CreateObject("Microsoft.XMLDOM")
xmlDoc.Async = "False"
xmlDoc.Load(steXmlFileName)

If xmlDoc.ParseError.ErrorCode<>0 then
Print "XML parsing Error:"
ReadXmlNode="XML parsing Error"
End If

Set colNodes=xmlDoc.selectNodes(strNodeHierarchy)

If colNodes.Length=1 Then
ReadXmlNode=colNodes.item(i).Text

Else
ReadXmlNode="Node Does Not Exist"

End If
'For Each objNode in colNodes
'
'            
'            msgbox objNode.Text &"Reading Node Value"
'            
'            If Trim(ReadXmlNode)="" Then
'            Msgbox "Node does not exists or Node Value is Blank. Exiting the function"
'            ReadXmlNode="Bad Data"
'            Exit Function 
'            End If
'Next
'
'ReadXmlNode=ReadData

xmlDoc.Save steXmlFileName
Set xmlDoc=Nothing       
'End FunctionmlFileName
'Set xmlDoc=Nothing        
End Function

End Class

Wednesday, 31 January 2018

Html Report In Process

Public objfso
Dim ResultFolder:ResultFolder="C:\Users\config\Desktop\UFT\"
Set objfso=Createobject("Scripting.FileSystemObject")


If NOT objfso.FolderExists(ResultFolder) then
   
    Msgbox "Folder Does Not Exist. Proceeding with creation"
    objfso.CreateFolder(ResultFolder)
   
 End If

 Filename=ResultFolder&Environment.Value("TestName")&".html"
 Print Filename
 Set Logfile=objfso.CreateTextFile(ResultFolder&Environment.Value("TestName")&".html")
 Logfile.Close()



 Call InitiateLog()
 Call WriteLog("PASS","teststep","stepdesc")

 Call WriteLog("Fail","teststep2","stepdesc2")
 Call Completelog()


 Function InitiateLog()

 Set ofile=objfso.OpenTextFile(Filename,8)

 ofile.WriteLine("<table border=1 cellspacing=1 > <tr>")
 ofile.WriteLine("<th>Status</th>")
 ofile.WriteLine("<th>Stepname</th>")
 ofile.WriteLine("<th>stepDescription</th>")

 'link=<a href='"https://www.w3schools.com">Visit W3Schools.com!</a>
' ofile.WriteLine("<td>&link</td>")
 ofile.WriteLine ("</tr>")

 ofile.Close

 End Function
 




 Function WriteLog(strStatus,Stepname,stepDescription)

 Set ofile=objfso.OpenTextFile(Filename,8)

 ofile.WriteLine("<tr>")
 ofile.WriteLine("<td>"&strStatus&"</td>")
 ofile.WriteLine("<td>"&Stepname&"</td>")
 ofile.WriteLine("<td>"&stepDescription&"</td>")

 'link=<a href='"https://www.w3schools.com">Visit W3Schools.com!</a>
' ofile.WriteLine("<td>&link</td>")
 ofile.WriteLine ("</tr>")
 ofile.Close


 End Function


 Function Completelog()
 Set ofile=objfso.OpenTextFile(Filename,8)
 ofile.WriteLine("</table>")
 ofile.Close

 End Function
  

Rest Assured Chectsheet

REST Assured Cheat Sheet 🚀 REST Assured Cheat Sheet Complete Reference for ...