wget con Quick Test Professional

I seguente codice può essere utilizzato in Quick Test Professional (o con poche modifiche anche trasformato in un VB Script), per estrarre il codice generato da una URL del tipo: http://www.bertadanilo.name/random.php che restituisce un numero generato randomicamente. Tale URL può anche essere vista come un rest web service.

Lo script è composto dalle seguenti routine:

  1. Funzione wgetToFile: si comporta come il classico comando wget di un sistema *ix; più esattamente di comporta come wget -o <nomefile> <url>, salvando i contenuti in un file di testo. La routine accetta come parametri di input l'indirizzo url da cui estrarre i dati e il nome del file saveTo in cui salvarli. Non effettua alcun tipo di elaborazione sui dati estratti.
*****************************************************************************************************
'     DANILO BERTA - 06/11/2012
'  
'
'  wgetToFile:   la funzione legge il contenuto associato ad una URL e 
'                            lo salva in un file temporaneo (parametro saveTo)

' Input:   url =  nella forma  http:// www.nomeurl.xxx
'         saveTo = nome del file temporaneo nel quale salvare il contenuto letto
' Output: il contenuto del file puntato dall'URL
'******************************************************************************************************
  Function  wgetToFile(URL,saveTo)

        ' Creo instanza dii ServerXMLHTTP (non di  XMLHTTP perchè ci sono problemi di cache)
        Set objXMLHTTP = CreateObject("MSXML2.ServerXMLHTTP")

        ''Eseguo la richiesta
        objXMLHTTP.open "GET", URL, false
        objXMLHTTP.setRequestHeader "Pragma", " no-cache"
        objXMLHTTP.setRequestHeader "Cache-Control", "max-age=0"
        objXMLHTTP.send()
        
        If  objXMLHTTP.readyState=4 And  objXMLHTTP.Status = 200 Then
            Set objADOStream = CreateObject("ADODB.Stream")
            objADOStream.Open
            objADOStream.Type = 1 'adTypeBinary
        
            objADOStream.Write objXMLHTTP.responseBody
                        objADOStream.Position = 0 'Posizione dello stream all'inizio
        
            Set objFSO = Createobject("Scripting.FileSystemObject")
            If objFSO.Fileexists(saveTo) Then objFSO.DeleteFile saveTo
            Set objFSO = Nothing
        
            objADOStream.SaveToFile saveTo
            objADOStream.Flush
            objADOStream.Close
            Set objADOStream = Nothing
        Else
          ' Fallisco il test
          desErrore = "La URL " + URL + "  ha restituito un codice HTTP diverso da 200 e pari a:  " & CStr(objXMLHTTP.status) &  " equivalente a: " & objXMLHTTP.statusText
          Reporter.ReportEvent micFail,"Funzione wgetToFile",desErrore
                    ExitTest            
        End if
        
        Set objXMLHTTP = Nothing

  End Function

  1. Funzione readFile: legge il contenuto del file e lo restituisce. La routine accetta come parametri di input il nome del file fileName e non effettua alcun tipo di elaborazione sui dati estratti.

'*****************************************************************************************************
'     DANILO BERTA - 06/11/2012
'    
'
'  readFile:  la funzione legge il contenuto del file passato in input 
'                            e lo restituisce

' Input:       :  fileName =  stringa con il nome del file da leggere
' Output:   :  il contenuto del file puntato dall'URL
'******************************************************************************************************
Function readFile(fileName)

      ' Variabile di appoggio contenuto file
             strCharacters = ""

      ' Apro il file e lo leggo carattere per carattere
      Set objFSO = CreateObject("Scripting.FileSystemObject")
      ' Verifico se il file esiste...
            If objFSO.FileExists(fileName) then
        Set objFile = objFSO.OpenTextFile(fileName, 1)
        Do Until objFile.AtEndOfStream
          strCharacters =  objFile.ReadAll
        Loop
      else
          ' Fallisco il test
          Reporter.ReportEvent micFail,"Funzione readFile", "Il file " & fileName & " non è stato trovato "
                    ExitTest
      end if

      'Ritorno il contenuto del file
            readFile = strCharacters

End Function

  1. Funzione getCodice: legge il contenuto del file e restituisce il codice in esso contenuto (ossia il numero casuale generato). La routine accetta come parametri di input il nome del file fileName e la url da cui leggere i dati. Non fa altro che chiamare le due routine precedenti e restituire il codice estratto.

'*****************************************************************************************************
'     DANILO BERTA - 06/11/2012
'    
'
'  wgetToFile:   la funzione restituisce il codice  letto dalla URL, richiamando le
'                            due funzioni  wgetToFile e readFile

' Input: :  url =  nella forma  http:// www.nomeurl.xxx
'          fileTemp = nome del file temporaneo nel quale salvare il contenuto letto
' Output:: il codice 
'******************************************************************************************************
Function getCodice(URL,fileName)

  'Scrivo il contenuto nel file temporale
     wgetToFile  URL,fileName
   'Estraggo l'otput dal file
    output = readFile (fileName)
  'Estraggo il codice
  arrOut = split(output)
  'Restituisco il codice 
  getCodice = arrOut(UBound(arrOut))
End Function

Lo spezzone di codice che segue, chiama la routine getCodice precedente e lo restituisce attraverso un MessageBox.

    
  ' Parametri
    URL = "http://www.bertadanilo.name/random.php"
    fileName = "C:\key.txt"

  ' Chiamata alla generazione del codice 
  Code = getCodice(URL,fileName)
  MsgBox "Valore = " & Code ,vbOK,"Titolo" 

In calce al presente articolo potete scaricare il codice completo funzionante (e farne quello che volete).

Allegati:
FileDescrizioneDimensione del FileDownloadsCreato
Scarica questo file (wget_qtp.txt)wget QTPProgramma HP Quick Test Professional facenti le funzioni del comando wget linux/unix4 kB6132013-01-07 19:32

Aggiungi commento


Codice di sicurezza
Aggiorna

Copyright © 2017 Berta Danilo. Tutti i diritti riservati.
Joomla! è un software libero rilasciato sotto licenza GNU/GPL.