Aller au contenu
tests-performanceRechercherCtrl K
VuGen1 min de lecture

Scripting Vugen – Exemple de traitement de variables C et de paramètres VUGEN

Un exemple de code VuGen qui traite des variables C et des paramètres VuGen : sauvegarde d'un retour HTTP, malloc, suppression des espaces, expression régulière et boucle sur un paramètre.

L’essentiel

  • Déclaration de variables C et sauvegarde d'un retour HTTP dans un paramètre VuGen.
  • Variable C créée à la taille exacte du paramètre (malloc), puis nettoyée de ses espaces.
  • Traitement du paramètre par une expression régulière et boucle sur sa liste.

Je vous présente, ci-dessous, un exemple de code VUGEN dans lequel plusieurs points sont abordés :

  • Déclaration de variables C
  • Sauvegarde d’un retour HTTP dans un paramètre VUGEN
  • Instanciation d’une variable C avec la taille exacte du paramètre VUGEN (malloc)
  • Traitement de la variable C pour enlever les espaces
  • Sauvegarde d’une variable C dans un paramètre VUGEN
  • Traitement du Paramètre VUGEN avec une expression régulière
  • Boucle sur la liste d’un paramètre VUGEN
  • Et autre…
C
// Déclaration de la méthode Strip
void strip(char *s);
    
// Déclaration des variables C
int arrSize;
int iBureauxcount;
int x;
char arrayParamName[512]; 
char *sStr = NULL;
char sVar[8192];
    
Action()
{
    
// Recupération d'une partie du BODY
web_reg_save_param_ex(
    "ParamName=ALL_BUREAUX",
    "LB/IC=Example",
    "RB/IC=Example",
    "Ordinal=1",
    "SEARCH_FILTERS,
    "Scope=body",
    "IgnoreRedirections=No",
    "RequestUrl=*/example.do",
    LAST);
        
// Appel métier
web_custom_request("calculAlertesAction.do_7", 
    "URL=https://example.do", 
    "Method=POST", 
    "Resource=0", 
    "RecContentType=application/json", 
    "Referer=https://example.do", 
    "Snapshot=t373.inf", 
    "Mode=HTTP", 
    "EncType=application/json; charset=UTF-8", 
    "Body=BODY REQUEST", 
    LAST);

// Création d'une variable C de type integer contenant la valeur de la taille du paramètre {ALL_BUREAUX}
arrSize = strlen(lr_eval_string("{ALL_BUREAUX}"));
        
// Création d'une variable C de type char, de la taille exacte du paramètre VUGEN {ALL_BUREAUX}
sStr = (char *)malloc((arrSize + 1) * sizeof(char));
        
// Copy du paramètre VUGEN {ALL_BUREAUX} dans la variable C sStr
strcpy(sStr, lr_eval_string("{ALL_BUREAUX}") );
        
// Suppression des espaces dans la variable C sStr
strip(sStr);
        
// Sauvegarde de la variable C sStr dans un nouveau paramètre VUGEN {ALL_BUREAUX_CLEAN}
lr_save_string(sStr, "ALL_BUREAUX_CLEAN");
        
// Suppression de la variable C sStr
free(sStr);
        
// Traitement du nouveau paramètre VUGEN {ALL_BUREAUX_CLEAN} avec une expression régulière
lr_save_param_regexp (
    lr_eval_string("{ALL_BUREAUX_CLEAN}"),
    strlen(lr_eval_string("{ALL_BUREAUX_CLEAN}")),
    "RegExp/IC=(option value=\\\".*?\\\">.*?\\\/option)",
    "Ordinal=All",
    "ResultParam=BUREAU_CLEAN",
    LAST );
        
// Création d'une variable C de type integer contenant le nombre d'enregistrements trouvés
iBureauxcount = atoi(lr_eval_string("{BUREAU_CLEAN_count}"));

// Affiche du nombre d'enregistrement trouvés
lr_output_message("Number of items found = %d", iBureauxcount);

// Boucle tant qu'il y a des enregistrements
for (x=1; x<=iBureauxcount; x++) 
{ 

        // Incrementation du paramètre VUGEN avec la valeur de la variable C x 
        sprintf(arrayParamName, "{BUREAU_CLEAN_%d}", x); 

        // Test si la valeur est trouvée 
        if (((char *)strstr(lr_eval_string(arrayParamName), lr_eval_string("{Terrain_Param}")) != 0)) { 

               // Affichage de la chaine recherchée 
               //lr_output_message ("%s: %s", arrayParamName, lr_eval_string(arrayParamName)); 

               // La valeur est trouvée, traitement du paramètre arrayParamName avec une expression régulière 
               // et sauvegarde d'un nouveau paramètre VUGEN {BUREAU_VALIDE} 

               lr_save_param_regexp ( lr_eval_string(arrayParamName), 
                     strlen(lr_eval_string(arrayParamName)), 
                     "RegExp/IC=option value=\\\"(.*?)\\\">.*?\\\/option",
                     "Ordinal=1",
                 "ResultParam=BUREAU_VALIDE",
                 LAST );
                
                lr_output_message ("%s: %s", arrayParamName, lr_eval_string(arrayParamName));             
         }
         else
         {
                lr_output_message ("NON"); 
         }    
                //lr_output_message ("%s: %s", arrayParamName, lr_eval_string(arrayParamName)); 
         }
        
// Création d'une variable C de type integer contenant le nombre d'enregistrements trouvés
iBureauxcount = atoi(lr_eval_string("{LISTE_BUREAU_count}"));

//strcpy(sVar, "idDossierSelectionne=&");
//strcat(sVar, "Name=idObjetDetail&");

// Boucle tant qu'il y a des enregistrements
for (x=1; x<=iBureauxcount; x++) { 

        // Incrementation du paramètre VUGEN avec la valeur de la variable C x 
        sprintf(arrayParamName, "{LISTE_BUREAU_%d}", x); 

        lr_output_message ("%s: %s", arrayParamName, lr_eval_string(arrayParamName)); 

        if(x == 1 && x == iBureauxcount ) 
        { 
                strcpy(sVar, lr_eval_string(arrayParamName)); 
        } 
        else if (x == 1 && x != iBureauxcount) 
        { 
                strcpy(sVar, lr_eval_string(arrayParamName)); 
                strcat(sVar, "%2C"); 
        } 
        else if (x > 1 && x < iBureauxcount) 
        { 
                strcat(sVar, lr_eval_string(arrayParamName)); strcat(sVar, "%2C"); 
        } 
        else if (x > 1 && x == iBureauxcount)
        {
                strcat(sVar, lr_eval_string(arrayParamName));
        }
                    
}
            
// Sauvegarde de la variable C sVar dans le paramètre VUGEN {LISTE_BUREAU_CLEAN}
lr_save_string(sVar, "LISTE_BUREAU_CLEAN");
    
    
return 0;
}

// Méthode pour supprimer les espaces vide d'une variable C
void strip(char *s) 
{
    char *p2 = s;
    while(*s != '\0') 
    {
            if(*s != '\t' && *s != '\n') 
            {
                   *p2++ = *s++;
            } 
                else 
            {
                    ++s;
            }
    }
    *p2 = '\0';
}

Dans la même catégorie.

↑ ↓ choisirEntrée ouvrirÉchap fermer