web_save_timestamp_param("tStamp", LAST);
Ensuite, il suffit d'appeler de manière classique la variable //tStamp// là où vous voulez l'utiliser.
==== Alternative possible ====
Il faut commencer par insérer le code suivant en début de script.
char timestamp[16];
typedef long time_t;
struct _timeb {
time_t time;
unsigned short millitm;
short timezone;
short dstflag;
};
struct _timeb t;
// tzset(); // Sets variables used by ftime
Ensuite à chaque fois que vous avez besoin d'un timestamp, il faut utiliser le code suivant :
ftime( &t );
sprintf(timestamp, "%ld%03u", t.time, t.millitm);
lr_save_string(timestamp, "montimestamp01");
Il vous reste enfin à utiliser la variable //montimestamp01// ainsi créée là où cela s'avère nécessaire.
===== TruClient =====
===== Transaction =====
Pour qu’une transaction se termine correctement (si elle s’est bien déroulée), il faut absolument mettre un objet //Verify// __juste avant la fin de la transaction__. Attention, ne fonctionne pas si le Verify se trouve dans une boucle //For// ou une condition //If//.
==== Utiliser une variable LoadRunner ====
Définissez votre variable de manière classique, dans le VUGen.
Si par exemple votre variable LR se nomme LOGIN, ajoutez un objet //Evaluate Javascript// juste avant l'objet dans lequel vous souhaitez utiliser la variable :
Login=LR.getParam("LOGIN");
Ensuite dans l'objet à variabiliser, vous pouvez utiliser la variable javascript //Login// que vous venez de définir.
==== Wait randomisé ====
TruClient ne permet pas de randomiser les temps d’attentes au niveau des paramètre de tir, en définissant un pourcentage de variabilité, comme dans les scripts web (HTTP/HTML). Il est néanmoins possible de se rapprocher de ce comportement en remplaçant la valeur d’un Wait avec un code de ce genre :
Math.floor (11*Math.random () +5);
Dans cet exemple, cela donne un temp compris entre 5 et 15 secondes, puisque le 11*Math.random () retourne un aléa dont la valeur est comprise entre 0 et 10 inclus.
==== Écriture dans les logs ====
Pour facilité le débogage de vos scripts, il est toujours intéressant de pouvoir écrire dans les logs du script exécuté. Pour cela, il faut utiliser la commande //LR.log(text, level)//. La commande suivante écrit le message « Votre message » en tant qu’avertissement. Le script continuera donc son exécution.
LR.log("Votre message", "Warning");
level peut prendre les valeurs suivantes :
* Error
* Warning
* Standard
* Extended
* Status
==== Boucle While ====
TruClient ne propose pas la boucle While pour l’organisation du code. Il est cependant possible d’obtenir le même résultat avec une boucle For, dans laquelle il faut uniquement remplir le champ Condition des Arguments.
Ce qui donne par exemple :
For ([Init]; getStyle("popup_message","display") != "none"; [Increment])
==== Modifier des paramètres Firefox pendant le tir ====
TruClient est assez pauvre en ce qui concerne les options de réglage du navigateur Firefox. Il se limite principalement aux réglages du proxy. Alors comment faire pour modifier d'autres paramètres du navigateur pour qu'ils soient actifs durant le déroulement d'un scénario ?
L'exemple utilisé ici permet de modifier, avec du javascript, la préférence de la langue à utiliser pour le contenu de la page web affichée. En effet s'il est possible d'installer dans le VuGen l'extension Firefox Quick Locale Sitcher, gérant les préférences pour la langue à utiliser pour le contenu des pages, le navigateur utilisé par les injecteurs lui est en anglais, avec l'anglais comme langage à utiliser par défaut. Dans about:config de Firefox, ce paramètre se nomme //intl.accept_languages//.
Sur le VuGen, dans le fichier //JS-functions.js//, ajoutez la fonction suivante :
function setLanguage(value) {
var prefs = Components.classes["@mozilla.org/preferences-service;1"].getService(Components.interfaces.nslPrefService);
var alPref = prefs.getBranch("intl.");
if (value)
alPref.setCharPref("accept_languages", value);
else
alPref.clearUserPref("accept_languages");
}
Il ne reste plus qu'à ajouter la ligne suivante au début du script en mode développement, dans un objet //Evaluate Javascript// :
setLanguage("fr, fr-FR");
Et voilà ! Maintenant le navigateur utilisera le français par défaut pour le contenu des pages.
==== Trouver un ou plusieurs éléments grâce à la classe ====
Pour trouver un élément, il faut utiliser la fonction //document.querySelectorAll//.
/*
* Certaines taches sélectionnées ont déjà été acceptées par un autre utilisateur */
var results = document.querySelectorAll('div[class="boite_alerte"]');
var my_results="";
var valid_results=new Array();
var vr_i=0;
//window.alert(results.length);
for (var i = 0; i < results.length; i++) {
if ( results[i].textContent.match(/Certaines taches sélectionnées ont déjà été acceptées par un autre utilisateur/)
&& document.defaultView.getComputedStyle(results[i],null).getPropertyValue("display") != "none" ) {
valid_results.push(results[i]);
//window.alert("Le contenu est : " + valid_results[vr_i].textContent);
vr_i++;
}
}
//for (var i = 0; i < vr_i; i++) {
// my_results = my_results + valid_results[i].value + "\n";
//}
//window.alert(my_results);
if ( valid_results.length > 0) {
window.var_for=0;
true;
}
else {
//Permet de sortir de la boucle For
window.var_for=1;
false;
}
===== Erreurs =====
==== Error -27778 ====
Error -27778: SSL protocol error when attempting to connect with host "bdc.zazmiz.net" [MsgId: MERR-27778]
Sur beaucoup de pages sur Internet, cette erreur est provoquée par le manque d'un certificat client. Mais de mon côté j'ai rencontré cette erreur avec une application qui utilisait uniquement un certificat côté serveur. Le problème se produisait quand je simulais le user-agent //Mozilla/5.0 (Windows NT 6.0; rv:6.0.2) Gecko/20100101 Firefox/6.0.2//, mais pas en simulant un Internet Explorer 7. J'ai fini par identifier que cela venait du fait que le serveur apache avait été configuré pour accepter uniquement le cipher RC4-SHA (ou RC4 128 bits). Or LoadRunner n'arrivait pas à se mettre d'accord avec le serveur sur le chiffrement à utiliser et provoquait donc l'erreur 27778.
Pour résoudre ce problème, il faut forcer LoadRunner à utiliser le bon chiffrement via la commande suivante en début de script :
web_set_sockets_option("SSL_CIPHER_LIST", "RC4-SHA");